본문 바로가기
버그

AWS ElasticBeanstalk 오류, Environment named is an invalid state for this operation. Must be Ready

by imsoncod 2022. 7. 8.

개요

어느날 갑자기 팀원으로부터 오류가 뜨면서 서버 배포가 되지 않는다는 DM이 왔다. 에러 내용은 아래와 같았다.

잘못된 코드가 커밋되었거나 환경 구성이 변경된 것은 아니었고, 최근 ElasticBeanstalk에 연결되어 있는 ALB(Application Load Balancer)SSL인증서수동으로 변경해준 것이 원인이었다(디테일한 내용은 잘 모르겠다)

구글에 리서치를 해보고 AWS Support도 이용해봤지만, 문제를 해결하고 현재 사용하고 있는 서버 환경을 그대로 가져가는 것은 어려워 보였다.

결국, 배포 일정으로 인해 현재와 똑같은 서버 환경을 하나 더 만들어서 새로 띄워야 하는 상황에 놓이고 말았다. 이로 인한 다운타임은 어느정도 감수해야겠다 싶어 새벽 작업을 계획하고 있는도중, ElasticBeanstalk에서 Swap URL이라는 기능을 지원한다는 것을 알게되었다.

해결

Swap URL기능은 아래처럼 두 개의 서버 환경에 각각 맵핑되어 있는 EndPoint URL서로 교체하는 것으로, 다운타임이 발생하지 않는다.

[Before Swap]
A.naver.com -> A Server
B.naver.com -> B Server

[After Swap]
B.naver.com -> A Server
A.naver.com -> B server

물론 현재와 똑같은 서버 환경을 하나 더 만들어야 하는 것에는 변함이 없지만, 프로덕션 환경에서 다운타임 없이 문제를 해결하고 서버를 배포할 수 있다는 것은 아주 큰 장점이다.

Swap URLElasticBeanstalkEnvironment의 우측 메뉴를 통해 진행할 수 있다.

새로운 환경 만들 때, 환경변수를 일일이 옮기는게 매우 힘들었다. 아직 AWS Console에서는 Json Import같은 거 지원하진 않는 듯...

반응형

댓글