AWS Elastic Beanstalk에서 애플리케이션을 실행하고 있으며 최신 AMI를 사용하려면 새로운 환경을 만들어야하는 것처럼 보입니다.
최신 AMI ID가 무엇인지 알면 환경 구성에서 업데이트 할 수 있습니다.
최신 Elastic Beanstalk AMI의 ID를 찾을 수있는 곳이 있습니까? 아니면 새 버전이 출시 될 때마다 인스턴스를 새 버전으로 자동 교체 할 수 있습니까?
AWS Elastic Beanstalk에서 애플리케이션을 실행하고 있으며 최신 AMI를 사용하려면 새로운 환경을 만들어야하는 것처럼 보입니다.
최신 AMI ID가 무엇인지 알면 환경 구성에서 업데이트 할 수 있습니다.
최신 Elastic Beanstalk AMI의 ID를 찾을 수있는 곳이 있습니까? 아니면 새 버전이 출시 될 때마다 인스턴스를 새 버전으로 자동 교체 할 수 있습니까?
답변:
AWS Beanstalk 환경을 업그레이드하기 위해 권장되고 지원되는 방법은 여기 에 문서화되어 있으며 관리되는 플랫폼 업데이트에 대해서는 여기 에서 설명 합니다 . 중단없는 업데이트 만 받으면 AWS가 프로세스를 관리하므로 가동 중지 시간이 없습니다.
따라서 관리 형 플랫폼 업데이트가 귀하 또는 다른 사람이 Google에서 원할 것임을 반복하고 싶지만 Beanstalk 환경에 최신 AWS 제공 AMI를 알고 싶다면 AWS CLI를 사용하여 사소하게 수행 할 수 있습니다 (감사합니다) AMI에서 Amazon의 명명 규칙을 제정하는 것).
환경에서 인스턴스를 시작하여 현재 AMI를 가져 오도록 인스턴스를 설명하십시오 (현재 AMI를 이미 알고 있으면 건너 뛰십시오).
aws ec2 describe-instances --instance-ids i-0909613f35ec0ffee --query 'Reservations[*].Instances[*].ImageId' --output text
ami-35290a56
결과 AMI ID를 가져 와서 설명하십시오.
aws ec2 describe-images --image-ids ami-35290a56 --query 'Images[*][Architecture, Hypervisor, Name, RootDeviceType, VirtualizationType]' --output json
[
[
"x86_64",
"xen",
"aws-elasticbeanstalk-amzn-2016.03.0.x86_64-python34-hvm-201603290718",
"ebs",
"hvm"
]
]
위의 출력을 새로운 정렬 된 입력으로 사용할 수 describe-images
있지만 이번에는 타임 스탬프를 *
와일드 카드 기호 로 바꿉니다.
aws ec2 describe-images --filters 'Name=architecture,Values=x86_64' 'Name=virtualization-type,Values=hvm' 'Name=owner-alias,Values=amazon' 'Name=name,Values=aws-elasticbeanstalk-amzn-*.x86_64-python34-hvm-*' --query 'sort_by(Images[*], &Name)[-1].ImageId' --output text
ami-1be5de78
어휘 정렬 및 ISO 8601의 힘으로 인해 우리는 최신 AMI로 끝납니다 ami-1be5de78
.
aws ec2 describe-images --image-ids ami-1be5de78 --query 'Images[*].Name' --output text
aws-elasticbeanstalk-amzn-2016.09.0.x86_64-python34-hvm-201612200708
다시 한 번이 AMI를 직접 변경하지 않는 것이 좋습니다. Beanstalk에는이 모든 작업을 수행 할 수있는 조항이 있습니다!
eb와 함께 제공되는 관리되는 업데이트 기능을 사용할 수 있지만이를 위해서는 향상된 상태보고 비용을 지불해야합니다. 또는 'eb platform show'명령을 사용하십시오. 작업자 앱에는 CURRENT = eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]'
LATEST = eb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]'
- 를 실행하는 크론이 있습니다. 그런 다음 비교하고 eb clone (기본값은 새 버전)과 cname swap을 사용할 수 있습니다.
애플리케이션의 대시 보드로 이동하여 '구성'을 찾은 다음 '변경'을 클릭하십시오.
플랫폼을 선택할 수있는 목록이 나타납니다. 최신 버전이 해당 목록에 표시됩니다. 플랫폼 선택
AWS EB는 다른 프로그래밍 언어에 대해 특정 설정을 사용합니다. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html 문서에서 설정 목록을 찾을 수 있습니다.
각 플랫폼이 사용하는 AMI 버전을 보여주는 표가 있습니다.
그래도 이러한 업데이트를 자동으로 실행할 수있는 방법을 찾지 못했습니다. 실제로 플랫폼의 변경 사항을 검토하고 배포하기 전에 테스트하는 것이 좋습니다.
아래 단계를 사용하여 Beanstalk에서 호스팅되는 현재 애플리케이션을 최신 Amazon Linux AMI로 업데이트 할 수있었습니다.
1- AWS 콘솔에 로그인하고 Beanstalk 포털로 이동합니다.
2- 애플리케이션의 구성 페이지로 이동하여 '인스턴스'를 클릭하십시오.
3- AMI ID는 AMI-xxxxxx와 같아야합니다.
4- AMI id를 가져와 EC2 콘솔로 다시 이동하여 AMI를 클릭합니다.
5-보기를 퍼블릭 이미지로 변경하고 Beanstalk 구성에서 이전에 AMI id 검색을 찾습니다.
6- 해당 인스턴스를 새 인스턴스로 시작하십시오.
7- 일단 시작되면 인스턴스에 로그인하고 애플리케이션 요구 사항에 따라 사용자 정의하십시오.
8- 일단이 새로운 인스턴스의 AMI 이미지를 생성하기 위해 모든 것을 만족 시켰습니다.
9- 8 단계에서 생성 한 새 인스턴스 AMI id를 가져와 Beanstalk 응용 프로그램 구성에 적용합니다.
10- 사용자 지정 AMI를 사용하여 이전 인스턴스를 삭제하고 새 인스턴스를 생성하지 않으며 최신 애플리케이션을 새 인스턴스에 배포합니다.