EB CLI 관련 문제 해결 - AWS Elastic Beanstalk

EB CLI 관련 문제 해결

이 주제에는 EB CLI를 사용하는 경우 발생하는 일반적인 오류 메시지가 가능한 해결 방안이 나와 있습니다. 여기 표시되지 않은 오류 메시지가 발생하면 의견 링크를 사용하여 해당 메시지에 대해 알려주시기 바랍니다.

ERROR: git 명령을 처리하는 동안 오류가 발생했습니다. 오류 코드: 128 오류: 치명적: 유효한 개체 이름 HEAD가 아닙니다.

원인: 이 오류 메시지는 Git 리포지토리를 초기화했으나 아직 커밋하지 않은 경우 표시됩니다. EB CLI에서는 프로젝트 폴더에 Git 리포지토리가 포함된 경우 HEAD 개정을 찾습니다.

해결 방안: 프로젝트 폴더의 파일을 스테이징 영역에 추가한 다음 커밋합니다.

~/my-app$ git add . ~/my-app$ git commit -m "First commit"

ERROR: 이 분기에는 기본 환경이 없습니다. “eb 상태 내-env-name”을 입력하여 환경을 지정하거나 “eb 사용 my-env-name”을 입력하여 기본 환경을 설정해야합니다.

원인: git에서 새 브랜치를 생성하는 경우 새 브랜치는 기본적으로 Elastic Beanstalk 환경에 연결되어 있지 않습니다.

해결 방안: eb list를 실행하여 사용 가능한 환경 목록을 확인합니다. 그런 다음 eb use env-name을 실행하여 사용 가능한 환경 중 하나를 사용합니다.

ERROR: 2.0+ 플랫폼에는 서비스 역할이 필요합니다. --service-role 옵션을 제공할 수 있습니다.

원인: eb create를 사용하여 환경 이름을 지정한 경우(예: eb create my-env) EB CLI에서는 서비스 역할을 자동으로 생성하지 않습니다. 기본 서비스 역할이 없는 경우 위와 같은 오류가 표시됩니다.

해결 방안: 환경 이름 빼고 eb create를 실행하고 표시되는 메시지에 따라 기본 서비스 역할을 생성합니다.

배포 문제 해결

Elastic Beanstalk 배포가 계획한 대로 원활하게 진행되지 않은 경우 웹사이트 대신 404(애플리케이션 시작에 실패한 경우) 또는 500(런타임 중 애플리케이션이 실패한 경우) 응답이 표시될 수 있습니다. 여러 가지 일반적인 문제를 해결하기 위해 EB CLI를 사용하여 배포 상태를 확인하거나, 로그인을 확인하거나, SSH를 사용하여 EC2 인스턴스에 대한 액세스 권한을 얻거나, 애플리케이션 환경에 해당하는 AWS Management Console 페이지를 열 수 있습니다.

EB CLI를 사용하여 배포 문제를 해결하려면

  1. eb status를 실행하면 현재 배포 상태 및 EC2 호스트 상태를 확인할 수 있습니다. 예:

    $ eb status --verbose Environment details for: python_eb_app Application name: python_eb_app Region: us-west-2 Deployed Version: app-150206_035343 Environment ID: e-wa8u6rrmqy Platform: 64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7 Tier: WebServer-Standard- CNAME: python_eb_app.elasticbeanstalk.com Updated: 2015-02-06 12:00:08.557000+00:00 Status: Ready Health: Green Running instances: 1 i-8000528c: InService
    참고

    --verbose 스위치를 사용하면 실행 중인 인스턴스의 상태에 대한 정보가 제공됩니다. 이 스위치를 사용하지 않으면 eb status는 환경에 대한 일반 정보만 출력합니다.

  2. eb health를 실행하면 환경에 대한 상태 정보를 볼 수 있습니다.

    $ eb health --refresh elasticBeanstalkExa-env Degraded 2016-03-28 23:13:20 WebServer Ruby 2.1 (Puma) total ok warning degraded severe info pending unknown 5 2 0 2 1 0 0 0 instance-id status cause Overall Degraded Incorrect application version found on 3 out of 5 instances. Expected version "Sample Application" (deployment 1). i-d581497d Degraded Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1). i-d481497c Degraded Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1). i-136e00c0 Severe Instance ELB health has not been available for 5 minutes. i-126e00c1 Ok i-8b2cf575 Ok instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50 p10 Overall 646.7 100.0 0.0 0.0 0.0 0.003 0.002 0.001 0.001 0.000 i-dac3f859 167.5 1675 0 0 0 0.003 0.002 0.001 0.001 0.000 i-05013a81 161.2 1612 0 0 0 0.003 0.002 0.001 0.001 0.000 i-04013a80 0.0 - - - - - - - - - i-3ab524a1 155.9 1559 0 0 0 0.003 0.002 0.001 0.001 0.000 i-bf300d3c 162.1 1621 0 0 0 0.003 0.002 0.001 0.001 0.000 instance-id type az running load 1 load 5 user% nice% system% idle% iowait% i-d581497d t2.micro 1a 25 mins 0.16 0.1 7.0 0.0 1.7 91.0 0.1 i-d481497c t2.micro 1a 25 mins 0.14 0.1 7.2 0.0 1.6 91.1 0.0 i-136e00c0 t2.micro 1b 25 mins 0.0 0.01 0.0 0.0 0.0 99.9 0.1 i-126e00c1 t2.micro 1b 25 mins 0.03 0.08 6.9 0.0 2.1 90.7 0.1 i-8b2cf575 t2.micro 1c 1 hour 0.05 0.41 6.9 0.0 2.0 90.9 0.0 instance-id status id version ago deployments i-d581497d Deployed 2 v2 9 mins i-d481497c Deployed 2 v2 7 mins i-136e00c0 Failed 2 v2 5 mins i-126e00c1 Deployed 1 Sample Application 25 mins i-8b2cf575 Deployed 1 Sample Application 1 hour

    위의 예제는 인스턴스가 5개 있는데 세 번째 인스턴스에서 버전 "v2" 배포에 실패한 환경을 보여줍니다. 실패한 배포 다음에는 예상되는 버전이 성공한 마지막 버전으로 재설정됩니다. 이 경우에는 첫 번째 배포의 "Sample Application"입니다. 자세한 내용은 EB CLI를 사용하여 환경 상태 모니터링 단원을 참조하십시오.

  3. eb logs를 실행하면 애플리케이션 배포와 연결된 로그를 다운로드하여 확인할 수 있습니다.

    $ eb logs
  4. eb ssh를 실행하면 애플리케이션을 실행하는 EC2 인스턴스와 연결하고 직접 확인할 수 있습니다. 배포한 애플리케이션은 인스턴스에서는 /opt/python/current/app 디렉터리에서, Python 환경에서는 /opt/python/run/venv/에서 찾을 수 있습니다.

  5. eb console을 실행하여 AWS Management Console에서 애플리케이션 환경을 확인합니다. 웹 인터페이스를 사용하면 애플리케이션의 구성, 상태, 이벤트 로그 등 배포의 다양한 측면을 쉽게 확인할 수 있습니다. 또한 서버에 배포한 현재 또는 이전 애플리케이션 버전을 다운로드할 수도 있습니다.