아마존 웹서비스의 엘라스틱 빈스톡(Elastic Beanstalk)은 웹 콘솔뿐만 아니라 커맨드 툴(eb-cli)을 제공한다. 이를 사용하면 웹콘솔에 직접 접속하지 않아도 빈스톡에 새로운 어플리케이션을 생성하고 로컬에서 작업중인 프로그램을 명령어 한줄로 아마존에 배포할수 있다. 현재 최신버전인 eb-cli 3.x 버전을 기준으로 사용법을 알아보자.

환경 설정

커맨드라인 툴 설치후 중요한 것은 아마존 웹서비스의 IAM에서 유저를 생성하고 아마존 서비스에 접근권한을 설정해야 한다. 빈스톡을 사용할 것이기 때문에 AWS Elastic Beanstalk Full Access 권한을 설정한다. 크리덴셜 파일을 다운받고 이를  ~/.aws/config에 등록시킨다.

[profile eb-cli]
aws_access_key_id = MY_AWS_ACCESS_KEY_ID
aws_secret_access_key = MY_AWS_SECRET_ACCESS_KEY

eb-cli 툴은 이 환경설정 파일을 참고하여 빈스톡을 관리한다.

배포

작업중인 프로젝트 폴더로 이동한다. eb init 으로 빈스톡 어플리케이션을 생성한다. 배포 지역 등 몇가지 질문에 대해 답변하고 종료한다. 그후 eb crate으로 빈스톡에 어플리케이션 환경을 생성한다. 환경(env)는 빈스톡에서 사용하는 용어로 아마존 서버스를 묶어놓은 서버 ‘환경’을 의미한다. eb create은 작업중인 프로젝트의 최종 커밋파일을 서버로 배포한다. 향후 수정된 다른 버전을 배포할 경우 변경사항을 커밋한 뒤 eb deploy 명령어로 서버를 업데이트 할 수 있다. 참고로 형상관리툴은 git을 사용해야 eb-cli 툴 사용이 가능하다.

다중 계정

아마존 서버 계정 혹은 유저가 여럿일 경우 크리덴셜 파일에 대해 고민할 수 있다. IAM에서 받은 이 정보는 환경설정 파일(~/.aws/config)에 저장되어 있고, eb-cli 툴은 이 파일을 참조해 빈스톡을 관리한다.

이럴 경우는 ~/.aws/config에 아래처럼 크리덴셜 정보를 별도로 기록한다. 그러면 eb-cli툴은 profile 뒤에 입력한 값으로 계정을 식별한다.

[profile user01]
aws_access_key_id = USER01_ACCESS_KEY_ID
aws_secret_access_key = USER_01_AWS_SECRET_ACCESS_KEY

[profile user02]
aws_access_key_id = USER02_ACCESS_KEY_ID
aws_secret_access_key = USER_02_AWS_SECRET_ACCESS_KEY

만약 user01에 설정한 크리덴셜을 사용할 경우 eb-init --profile user01로 초기화 할 수 있다. 뿐만 아니라 모든 eb-cli 명령어에 --profile user01을 사용할 수 있다.

기타 명령어들

  • `eb open`: 빈스톡 주소를 웹브라우져로 접속한다.
  • `eb status`: 빈스톡 상태를 확인한다.
  • `eb config`: 빈스톡 세팅값을 변경한다.
  • `eb ssh`: 빈스톡 환경에 있는 EC2 인스턴스에 ssh로 접속한다. 단 ~/.ssh 폴더에 키페어파일(.pem)이 있어야한다.

나머지 명령어는 eb --help로 확인한다.