EB CLI를 사용하여 Elastic Beanstalk 환경 관리 - AWS Elastic Beanstalk

EB CLI를 사용하여 Elastic Beanstalk 환경 관리

EB CLI를 설치하고 프로젝트 디렉터리를 구성하면 EB CLI를 사용하여 Elastic Beanstalk 환경을 생성하고, 소스 및 구성 업데이트를 배포하고, 로그와 이벤트를 가져올 준비가 됩니다.

참고

EB CLI로 환경을 생성하려면 서비스 역할이 필요합니다. Elastic Beanstalk 콘솔에서 환경을 생성하여 서비스 역할을 생성할 수 있습니다. 서비스 역할이 없는 경우 사용자가 eb create를 실행할 때 EB CLI가 역할 생성을 시도합니다.

EB CLI는 성공한 모든 명령에 대해 종료 코드 0을 반환하고, 오류가 발생한 경우 0이 아닌 종료 코드를 반환합니다.

다음 예제에서는 샘플 Docker 애플리케이션에서 사용하도록 EB CLI를 사용하여 초기화된 eb라는 이름의 빈 프로젝트 폴더를 사용합니다.

Eb create

첫 번째 환경을 생성하려면 eb create를 실행하고 프롬프트를 따릅니다. 프로젝트 디렉터리 안에 소스 코드가 있는 경우 EB CLI는 이를 번들링한 후 환경에 배포합니다. 그렇지 않은 경우 샘플 애플리케이션이 사용됩니다.

~/eb$ eb create Enter Environment Name (default is eb-dev): eb-dev Enter DNS CNAME prefix (default is eb-dev): eb-dev WARNING: The current directory does not contain any source code. Elastic Beanstalk is launching the sample application instead. Environment details for: elasticBeanstalkExa-env Application name: elastic-beanstalk-example Region: us-west-2 Deployed Version: Sample Application Environment ID: e-j3pmc8tscn Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2 Tier: WebServer-Standard CNAME: eb-dev.elasticbeanstalk.com Updated: 2015-06-27 01:02:24.813000+00:00 Printing Status: INFO: createEnvironment is starting. -- Events -- (safe to Ctrl+C) Use "eb abort" to cancel the command.

환경이 준비되는 데 몇 분 정도 걸릴 수 있습니다. 환경이 생성되는 동안 명령줄로 돌아가려면 Ctrl+C를 누릅니다.

Eb status

eb status를 실행하여 환경의 현재 상태를 확인합니다. 상태가 ready이면 elasticbeanstalk.com에서 샘플 애플리케이션을 사용할 수 있고 환경을 업데이트할 준비가 됩니다.

~/eb$ eb status Environment details for: elasticBeanstalkExa-env Application name: elastic-beanstalk-example Region: us-west-2 Deployed Version: Sample Application Environment ID: e-gbzqc3jcra Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2 Tier: WebServer-Standard CNAME: elasticbeanstalkexa-env.elasticbeanstalk.com Updated: 2015-06-30 01:47:45.589000+00:00 Status: Ready Health: Green

Eb health

eb health 명령을 사용하여 환경 전반의 상태와 환경의 인스턴스에 대한 상태 정보를 봅니다. --refresh 옵션을 사용하여 10초마다 업데이트되는 대화형 보기에서 상태를 봅니다.

~/eb$ eb health api Ok 2016-09-15 18:39:04 WebServer Java 8 total ok warning degraded severe info pending unknown 3 3 0 0 0 0 0 0 instance-id status cause health Overall Ok i-0ef05ec54918bf567 Ok i-001880c1187493460 Ok i-04703409d90d7c353 Ok instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50 p10 Overall 8.6 100.0 0.0 0.0 0.0 0.083* 0.065 0.053 0.040 0.019 i-0ef05ec54918bf567 2.9 29 0 0 0 0.069* 0.066 0.057 0.050 0.023 i-001880c1187493460 2.9 29 0 0 0 0.087* 0.069 0.056 0.050 0.034 i-04703409d90d7c353 2.8 28 0 0 0 0.051* 0.027 0.024 0.021 0.015 instance-id type az running load 1 load 5 user% nice% system% idle% iowait% i-0ef05ec54918bf567 t2.micro 1c 23 mins 0.19 0.05 3.0 0.0 0.3 96.7 0.0 i-001880c1187493460 t2.micro 1a 23 mins 0.0 0.0 3.2 0.0 0.3 96.5 0.0 i-04703409d90d7c353 t2.micro 1b 1 day 0.0 0.0 3.6 0.0 0.2 96.2 0.0 instance-id status id version ago deployments i-0ef05ec54918bf567 Deployed 28 app-bc1b-160915_181041 20 mins i-001880c1187493460 Deployed 28 app-bc1b-160915_181041 20 mins i-04703409d90d7c353 Deployed 28 app-bc1b-160915_181041 27 mins

Eb events

eb events를 사용하여 Elastic Beanstalk의 이벤트 출력 목록을 확인합니다.

~/eb$ eb events 2015-06-29 23:21:09 INFO createEnvironment is starting. 2015-06-29 23:21:10 INFO Using elasticbeanstalk-us-east-2-EXAMPLE as Amazon S3 storage bucket for environment data. 2015-06-29 23:21:23 INFO Created load balancer named: awseb-e-g-AWSEBLoa-EXAMPLE 2015-06-29 23:21:42 INFO Created security group named: awseb-e-gbzqc3jcra-stack-AWSEBSecurityGroup-EXAMPLE ...

Eb logs

eb logs를 사용하여 환경의 인스턴스에서 로그를 가져옵니다. 기본적으로 eb logs는 시작된 첫 번째 인스턴스에서 로그를 가져와 이를 표준 출력으로 표시합니다. --instance 옵션으로 인스턴스 ID를 지정하여 특정 인스턴스에서 로그를 가져올 수 있습니다.

--all 옵션은 모든 인스턴스에서 로그를 가져와 이를 .elasticbeanstalk/logs 아래의 하위 디렉터리에 저장합니다.

~/eb$ eb logs --all Retrieving logs... Logs were saved to /home/local/ANT/mwunderl/ebcli/environments/test/.elasticbeanstalk/logs/150630_201410 Updated symlink at /home/local/ANT/mwunderl/ebcli/environments/test/.elasticbeanstalk/logs/latest

Eb open

브라우저에서 환경의 웹 사이트를 열려면 eb open을 사용합니다.

~/eb$ eb open

윈도우 모드 환경에서 기본 브라우저는 새 창에서 열립니다. 터미널 환경에서는 명령줄 브라우저(예: w3m)가 사용됩니다(사용 가능한 경우).

Eb deploy

환경을 시작할 준비가 되면 eb deploy를 사용하여 이를 업데이트할 수 있습니다.

이 명령은 소스 코드를 번들링한 후 배포할 때 더 잘 작동하므로 이 예제에서는 프로젝트 디렉터리에 다음 콘텐츠가 포함된 Dockerfile을 만들었습니다.

~/eb/Dockerfile

FROM ubuntu:12.04 RUN apt-get update RUN apt-get install -y nginx zip curl RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip EXPOSE 80 CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]

Dockerfile은 Ubuntu 12.04의 이미지를 배포하고 게임 2048을 설치합니다. eb deploy를 실행하여 애플리케이션을 환경에 업로드합니다.

~/eb$ eb deploy Creating application version archive "app-150630_014338". Uploading elastic-beanstalk-example/app-150630_014338.zip to S3. This may take a while. Upload Complete. INFO: Environment update is starting. -- Events -- (safe to Ctrl+C) Use "eb abort" to cancel the command.

eb deploy를 실행하면 EB CLI가 프로젝트 디렉터리의 콘텐츠를 번들링한 후 이를 환경에 배포합니다.

참고

프로젝트 폴더의 git 리포지토리를 초기화한 경우, 대기 중인 변경 사항이 있더라도 EB CLI가 항상 최신 커밋을 배포합니다. eb deploy를 실행하기 전에 변경 사항을 커밋하여 이를 환경에 배포합니다.

Eb config

eb config 명령을 사용하여 실행 중인 환경에 사용 가능한 구성 옵션을 봅니다.

~/eb$ eb config ApplicationName: elastic-beanstalk-example DateUpdated: 2015-06-30 02:12:03+00:00 EnvironmentName: elasticBeanstalkExa-env SolutionStackName: 64bit Amazon Linux 2015.03 v1.4.3 running Docker 1.6.2 settings: AWSEBAutoScalingScaleDownPolicy.aws:autoscaling:trigger: LowerBreachScaleIncrement: '-1' AWSEBAutoScalingScaleUpPolicy.aws:autoscaling:trigger: UpperBreachScaleIncrement: '1' AWSEBCloudwatchAlarmHigh.aws:autoscaling:trigger: UpperThreshold: '6000000' ...

이 명령은 텍스트 편집기에서 사용 가능한 구성 옵션 목록을 채웁니다. 표시되는 옵션 중 대부분이 null 값을 가지며, 이러한 옵션은 기본적으로 설정되어 있지 않으나 환경의 리소스를 업데이트하도록 수정할 수 있습니다. 이러한 옵션에 대한 자세한 내용은 구성 옵션 단원을 참조하십시오.

Eb terminate

환경 사용을 마치면 eb terminate를 사용하여 환경을 종료합니다.

~/eb$ eb terminate The environment "eb-dev" and all associated instances will be terminated. To confirm, type the environment name: eb-dev INFO: terminateEnvironment is starting. INFO: Deleted CloudWatch alarm named: awseb-e-jc8t3pmscn-stack-AWSEBCloudwatchAlarmHigh-1XLMU7DNCBV6Y INFO: Deleted CloudWatch alarm named: awseb-e-jc8t3pmscn-stack-AWSEBCloudwatchAlarmLow-8IVI04W2SCXS INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-east-2:123456789012:scalingPolicy:1753d43e-ae87-4df6-a405-11d31f4c8f97:autoScalingGroupName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingGroup-90TTS2ZL4MXV:policyName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingScaleUpPolicy-A070H1BMUQAJ INFO: Deleted Auto Scaling group policy named: arn:aws:autoscaling:us-east-2:123456789012:scalingPolicy:1fd24ea4-3d6f-4373-affc-4912012092ba:autoScalingGroupName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingGroup-90TTS2ZL4MXV:policyName/awseb-e-jc8t3pmscn-stack-AWSEBAutoScalingScaleDownPolicy-LSWFUMZ46H1V INFO: Waiting for EC2 instances to terminate. This may take a few minutes. -- Events -- (safe to Ctrl+C)

사용 가능한 EB CLI 명령의 전체 목록은 EB CLI 명령 참조 단원을 확인하십시오.