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 --
[MySQL] auto_increment 컬럼 값은 언제 증가할까 (0) | 2020.07.02 |
---|---|
TypeHandler를 이용한 객체 리스트를 text(varchar)로 저장하기 (1) | 2020.07.02 |
[HTML 기본] HTML파일에 자바스크립트 파일 링크/import/include하기 (0) | 2019.07.10 |
이클립스에 스프링부트 설치하기 (Install SpringBoot in Eclipse) (0) | 2019.06.26 |
[jQuery] 10. Effects ( 효과 ) (0) | 2016.06.12 |