EC2 (2)

sudo yum install -y gcc 
wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make
sudo cp src/redis-cli /usr/bin
redis-cli -h {redis-endpoint-address}

1) EC2에 build를 위한 gcc 설치

$ sudo yum install -y gcc 

2) redis stable 버전 다운로드 및 빌드

$ wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make

3) redis-cli 로 접속해보기 (기본포트 사용시 포트정보 필요없음)

$ ./src/redis-cli -h {레디스엔드포인트주소} -p {포트번호}

4) 사용의 편의성을 위해 usr/bin 디렉토리에 redis-cli 명령어 복사해놓기

$ sudo cp src/redis-cli /usr/bin

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