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 --