IP확인 (1)

💻 Programming/웹프로그래밍

[AWS] Beanstalk IP 주소 조회

AWS Beanstalk

AWS 빈스톡을 이용하여 인스턴스를 여러개 띄우고

분산시스템 환경을 만들어 개발을 할 때

빈스톡 인스턴스의 private IP가 필요할 경우 

AWS SDK를 이용하여 아래와 같이 구현을 할 수 있다.

public List<String> getBeanstalkIps() {
	return findIpsByIds(findIds(getBeanstalkResources()));
}

private DescribeEnvironmentResourcesResult getBeanstalkResources() {
	DescribeEnvironmentResourcesRequest request =
		new DescribeEnvironmentResourcesRequest()
        		.withEnvironmentName("my-beanstalk-app");
	return beanstalk.describeEnvironmentResources(request);
}

private List<String> findIds(DescribeEnvironmentResourcesResult resources) {
	return resources.getEnvironmentResources().getInstances().stream()
			.map(Instance::getId)
			.collect(toList());
}

private List<String> findIpsByIds(List<String> ids) {
	DescribeInstancesRequest request = 
    	new DescribeInstancesRequest().withInstanceIds(ids);
	DescribeInstancesResult result = ec2.describeInstances(request);
	return result.getReservations().stream()
			.flatMap(n -> n.getInstances().stream())
			.map(com.amazonaws.services.ec2.model.Instance::getPrivateIpAddress)
			.sorted()
			.collect(toList());
}

 

여기서 필요한 것은 "my-beanstalk-app"을 대체할 빈스톡 환경명인데

이 이름은 AWS Console > Elastic Beanstalk > (애플리케이션) > Environment 에서 확인이 가능하다. 

AWS SDK는 2018년 11월 2.x 버전이 나왔으나 아직 1.11 버전을 사용 중이다.

SDK 2.x로 구현시에는 아래와 같이 할 수 있다.

-- TODO --