[AWS] Elastic Beanstalk eb cli 활용하기

안녕하세요. 남산돈가스입니다.

얼마 전, Elastic Beanstalk로 손쉽게 서버를 구성해보면서, eb cli를 조금 더 유연하게 활용해볼까 라는 생각에 금주 포스팅은, eb cli 활용법에 대한 글을 작성해보려고 합니다.

선행으로 eb cli가 설치되어있다고 가정하고 포스팅을 진행하려고 하니, 아직 eb cli 설치를 하지 못하신 분은 AWS Elastic Beanstalk 명령줄 인터페이스(EB CLI) 설정하기 를 참고하시면 될 것같습니다.

eb cli 설치가 되었다면, 터미널에서 eb -h 라는 명령어를 입력해봅니다.

commands:
  abort        Cancels an environment update or deployment.
  appversion   Listing and managing application versions
  clone        Clones an environment.
  codesource   Configures the code source for the EB CLI to use by default.
  config       Modify an environment's configuration. Use subcommands to manage saved configurations.
  console      Opens the environment in the AWS Elastic Beanstalk Management Console.
  create       Creates a new environment.
  deploy       Deploys your source code to the environment.
  events       Gets recent events.
  health       Shows detailed environment health.
  init         Initializes your directory with the EB CLI. Creates the application.
  labs         Extra experimental commands.
  list         Lists all environments.
  local        Runs commands on your local machine.
  logs         Gets recent logs.
  open         Opens the application URL in a browser.
  platform     Commands for managing platforms.
  printenv     Shows the environment variables.
  restore      Restores a terminated environment.
  scale        Changes the number of running instances.
  setenv       Sets environment variables.
  ssh          Opens the SSH client to connect to an instance.
  status       Gets environment information and status.
  swap         Swaps two environment CNAMEs with each other.
  tags         Allows adding, deleting, updating, and listing of environment tags.
  terminate    Terminates the environment.
  upgrade      Updates the environment to the most recent platform version.
  use          Sets default environment.

eb cli로 실행할 수 있는 명령어 목록이 보여집니다. 이번 포스팅에서 가장 중심적으로 쓰이는 명령어를 몇가지 소개해드리겠습니다.

- appversion

먼저 eb appversion [환경명] 을 입력하면 입력한 환경에 대한 버젼 정보를 아래와 같은 형식으로 보여줍니다.

간단한 정보로 버전번호, label, 생성 일자, Description 등을 제공합니다.

- clone

다음은, clone 명령입니다. 말 그대로, 현재 생성되어있는 환경을 새로운 환경으로 복사하는 개념과 같습니다. 사용법은 eb clone [현재 생성되어있는 환경명] [새로 만들어진 환경명] 입니다.

clone을 하게 되면 복사할 환경에서 설정 된 정보들을 그대로 하나 복제하게 됩니다.


- console

console 명령어는 입력한 환경에 대한 AWS 웹 콘솔화면 페이지로 이동시켜주는 명령어입니다. 사용법은  eb console [환경명]입니다. 개인적으로, AWS 웹 콘솔로 이동하기 위한 번거로움을 해소시켜주는 점이 마음에 드는 명령어였습니다.

- create

create는 말 그대로 새로운 환경을 만드는 명령어입니다. 사용법은 단순하게 eb create 입니다.
명령을 실행하면 몇 가지 입력을 통해 필수 정보들을 설정할 수 있습니다.


- deploy

deploy는 로컬 환경에 작업하고 있는 프로젝트를 .elasticbeanstalk/config.yml 에 설정한 정보에 맞는 형태로 배포하는 명렁어 입니다. 사용버은 eb deploy 이고 가장 일반적으로 많이 사용되고 있는 명령어 입니다.


- health

health 명령은 현재 생성되어있는 환경들의 상태를 정리하여 보여주는 명령어 입니다.


- init

init 명령은 현재 디렉토리에 elastic beanstalk를 시작할 수 있는 환경을 만들어주는 명령어입니다.

프로젝트 디렉토리를 생성한 뒤 이동하여 eb init 명령을 실행하면 기존에 생성되어 있는 Application 정보를 가지고 올 수도 있고, 새로운 Application을 생성할 수 있습니다. create와 마찬가지로 몇 가지 입력형식을 받는 형태로 제공되며 결과적으로는 해당 프로젝트에 .elasticbeanstalk 라는 폴더와 하위에 config.yml 파일을 생성합니다.

- list

list 명령은 현재 생성되어 있는 환경의 목록을 보여주는 명령어입니다.

gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/WebStormProject/dev/github/api:> eb list
* eb-express-dev

- scale

scale 명령어는 입력한 환경명의 인스턴스 용량을 설정할 수 있는 명령어 입니다. 웹 콘솔에서 환경을 선택하시고 구성 -> 용량 을 선택하시면 인스턴스 갯수를 설정할 수 있습니다. 기본적으로 단일 인스턴스가 아닌 로드밸런싱 구성에서만 해당하며 min-max로 구성이 되어있는데, eb clid에서 eb scale [구동할 인스턴스 갯수] [환경명] 을 입력하시면 됩니다. 예를 들어 eb scale 2 [환경명] 을 실행하면 해당 환경의 인스턴스는 2-2로 설정되게 됩니다.


- printenv, setenv

printenv, setenv 는 보시는 것처럼 env(환경변수)를 print하고 set 할 수 있는 명령어입니다.

gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/WebStormProject/dev/github/api:> eb printenv
 Environment Variables:
     RDS_DATABASE = *****
     RDS_HOSTNAME = *****
     RDS_PASSWORD = *****
     RDS_USERNAME = *****
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/WebStormProject/dev/github/api:> eb setenv NODE_ENV=dev
INFO: Environment update is starting.
INFO: Updating environment eb-express-dev configuration settings.
INFO: Successfully deployed new configuration to environment.

gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/WebStormProject/dev/github/api:> eb printenv
 Environment Variables:
     NODE_ENV = dev
     RDS_DATABASE = *****
     RDS_HOSTNAME = *****
     RDS_PASSWORD = *****
     RDS_USERNAME = *****

- status

eb status는 해당 환경의 정보 및 상태를 간략하게 제공하는 명령어입니다.

gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/WebStormProject/dev/github/api:> eb status
Environment details for: eb-express-dev
  Application name: eb-express
  Region: ap-northeast-2
  Deployed Version: app-c3d3-180528_112616
  Environment ID: e-tej39ffejm
  Platform: arn:aws:elasticbeanstalk:ap-northeast-2::platform/Node.js running on 64bit Amazon Linux/4.5.0
  Tier: WebServer-Standard-1.0
  CNAME: eb-express-dev.hut4xtcmbh.ap-northeast-2.elasticbeanstalk.com
  Updated: 2018-05-28 02:27:05.346000+00:00
  Status: Ready
  Health: Green

- terminate

terminate 명령은 eb 환경을 중지시킬 때 사용하는 명령어입니다.
eb terminate [환경명] 으로 사용하고 제거되는 환경은 실행되고 인스턴스가 가지고있는 security group이라던지 elb들도 함께 삭제됩니다.




여기까지 eb cli의 명령어에 대해서 전부는 아니지만 자주 사용하는 명령어를 알아보았습니다.

생각보다 eb cli가 직관적으로 이해할 수 있도록 제공되는 것 같아 개발하면서 조금 더 유연하게 eb 환경을 컨트롤 할 수 있을 것 같습니다. 

감사합니다.


댓글

주간 인기글

[정보] 인스타그램은 당신의 소리를 '듣고' 있을 수도 있습니다

안드로이드에서 당겨서 새로고침(SwipeRefreshLayout) 쉽게 구현하기

[앱 디자인] 벤치마킹에 유용한 사이트

[앱 디자인] 디자인 가이드 만들기 - 아이폰

[AWS] WinSCP 를 이용해 Linux 인스턴스로 파일 전송하기