AWS Elastic Beanstalk 플랫폼 변경 (feat. eb cli)

EB 환경 플랫폼 버전업

AWS Elastic Beanstalk 플랫폼 변경 (feat. eb cli)
Photo by Alex Kulikov / Unsplash

배경

기존 사용중이던 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을 새로 생성한 환경으로 이동시켜준다.

이렇게 하면 끝.