AWS Elastic Beanstalk 플랫폼 변경 (feat. eb cli)
EB 환경 플랫폼 버전업
배경
기존 사용중이던 NodeJS 16 이 retired 되면서 버전업을 진행하게 되었다.
- Node 16 → 18
하지만 플랫폼 변경과 같이 기존 EB 환경 내부에서 변경할 수 없는 설정의 경우
새로운 EB 환경을 만들어 블루그린 배포하는 방식으로 변경해야한다.
따라서 Local에 기존 환경 구성을 복제, 버전 변경 후 블루그린 배포하는 방식으로 진행한다.
기존 환경 복제
기존 환경을 복제하기 위해 eb cli를 사용한다.
EB CLI 설치
$ git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git
$ python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py
다음과 같이 설치한다.
$ eb --version
EB CLI 3.21.0 (Python 3.8.16 (default, May 13 2024, 15:25:04)
[Clang 14.0.3 (clang-1403.0.22.14.1)])
EB Config Save
Config을 다운 받을 경로에서
// Default 값 등을 설정
$ eb init
Select a default region
...
Select an application to use
...
Select the default environment.
...
// 복제할 환경 이름 입력해주기 예) test-env
$ eb config save <EB 환경 명> --cfg <Config File 명>
Configuration saved at: <Download 경로>
// eb config save test-env --cfg test-env-sc
Configuration saved at: ~/{}/test-env-sc.cfg.yml
보안 주의) 해당 CLI로 다운받게 되면 기존 설정한 환경변수들까지 포함된다.
EB Config 수정
그 다음 다운받은 config file의 PlatformArn 을 변경해준다.
Node.js 16 running on 64bit Amazon Linux 2/5.5.0
-> Node.js 18 running on 64bit Amazon Linux 2
Platform:
PlatformArn: arn:aws:elasticbeanstalk:ap-northeast-2::platform/Node.js 18 running on 64bit Amazon Linux 2
EB 실행
eb create <새로 생성될 환경 이름> \
--cfg <저장한 Config file 명> \
--version <application version name>
// 예)
// eb create test-env-1 \
// --cfg test-env-sc \
// --version <Version>
다음과 같이 실행해준다.
Environment details for: <환경 명>
Application name: <애플리케이션 명>
Region: ap-northeast-2
Deployed Version: <애플리케이션 버전>
Environment ID: <애플리케이션 ID>
Platform: arn:aws:elasticbeanstalk:ap-northeast-2::platform/Node.js 18 running on 64bit Amazon Linux 2
Tier: WebServer-Standard-1.0
CNAME: UNKNOWN
Updated: 2024-12-16 02:14:04.433000+00:00
EB 테스트
새로 생성한 EB 환경이 정상적으로 작동하는지 테스트가 필요하다.
요부분은 각자 환경에 맞게 새로 배포한 환경이 정상적으로 작동하는지 체크하면 된다.
Blue/Green 배포
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
다음 Docs의 내용대로 진행한다.
간단하게
- 환경 개요 에서 기존 환경 체크 후 작업>환경도메인전환 새로 생성한 환경 선택
- 전 환경과 새 환경의 CNAME 레코드를 바꿔서 이전 버전의 트래픽을 새 버전으로 리다이렉션한다.
기존 있던 환경의 CNAME을 새로 생성한 환경으로 이동시켜준다.
이렇게 하면 끝.