AWS

AWS ElasticBeanstalk 콘솔에서 RDS 연결이 되지 않는 문제 해결

까뮈_b 2022. 6. 27. 21:28

Elasticbeanstalk 환경에서 RDS를 연결하려고 할 때 발생하는 오류

증상

  • ElasticBeanstalk 환경을 생성하면서, RDS를 사용하기 위해 ebs 콘솔에서 RDS를 생성(연결)하려고 하면, 위와 같은 에러가 발생한다.에러 메세지는 이렇다. 
  • Configuration validation exception: Invalid option value: '5.6' (Namespace: 'aws:rds:dbinstance', OptionName: 'DBEngineVersion'): Engine Version 5.6 not supported for mysql db

원인

  • 에러 메세지의 내용 그대로이다. Mysql 5.6버전을 더 이상 supported 하지 않아서 그렇다.
    그런데 조금 황당하다.아마도 ElasticBeanstalk 웹 콘솔에서 rds 설정 기본값이 mysql 5.6버전인데, 이것을 deprecated 처리를 해놓고, 웹 콘솔에는 반영하지 않아서 생긴 버그 같다. 나는 애초에 Mysql 5.6버전을 사용할 의사가 없다.
    첫 화면에서부터 저 오류가 뜨고 아무 것도 선택할 수가 없다.

해결법

해결법은 간단하다.

ElasticBeanstalk cli 환경에서 config 값을 수정만 해주면 된다

ElasticBeanstalk 는 웹 콘솔 뿐만 아니라 cli 환경도 제공한다. 아무래도 cli을 쓰는 편이 여러모로 나은 것 같다.

이 오류 해결에서는 ElasticBeanstalk CLI를 설치하는 것이 9할 9푼이다.

1. AWS ElasticBeanstalk CLI 설치(설치 스크립트 사용하는 방법)

아래 레포지토리의 설명대로 설치하면 된다. 단, python이 아니라 python3 라고 명시해주어야한다.

https://github.com/aws/aws-elastic-beanstalk-cli-setup

 

GitHub - aws/aws-elastic-beanstalk-cli-setup: Simplified EB CLI installation mechanism.

Simplified EB CLI installation mechanism. Contribute to aws/aws-elastic-beanstalk-cli-setup development by creating an account on GitHub.

github.com

설치 순서는 이렇다.

 

1. 인스턴스에 접속해서, git clone을 받는다.

git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git

 

2. EB CLI 설치 스크립트를 실행한다. (반드시 python3으로 설치해야한다!!)

python3 ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py

 

<더보기>를 클릭하면 python3를 사용하지 않고 문서 그대로만 따라했을 때 겪게 되는 과정을 차례로 기술했다.

더보기

python3를 사용하지 않고 문서 그대로만 따라하면 겪게 되는 과정을 나열해보겠다.

python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py

여기서, python virtualenv 가 없다는 에러가 뜬다.

virtualenv를 깔아주자.

pip install --user virtualenv

bash: pip: command not found 메세지가 뜨면서 명령어 실행이 되지 않을 것이다.

pip부터 깔아주자.

sudo yum -y install python-pip

그리고 차례로 실행하지 못한 명령어를 실행한다.

pip install --user virtualenv

python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py

여기서 끝나면 섭섭하지. 다른 오류가 발생했다.

Could not find a version that satisfies the requirement botocore<1.24.0,>1.23.41 (from awsebcli)

python 2 버전은 deprecated 된 지 오래다. 아마도 여기가 문제인 것 같다. python3를 깔아주자.

뭐든지 install 전에는 현재 설치되어있는지 버전 확인부터 해야한다. 헛수고를 하지 않기 위해..

python3 --version 으로 확인해보자.

나의 경우에는 python3와 pip3도 깔려있었다.

그렇다면 왜 위에서 python2가 deprecated 되었다는 메세지와 함께 에러를 뿜었을까?

pip는 python2의 패키지 매니저라서 그렇다.

python3, pip3를 사용하겠다고 명시해서 eb-cli를 설치해주자.

교훈 : 앞으로는 python3만 사용하자...

python3 ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py

 

 

이제 설치가 잘 되었는지 확인해보자.

eb --version

설치가 잘 되었다면 이제 기본 환경 설정을 해주고, config를 수정해주면 끝이다.

2. ElasticBeanstalk 기본 환경 설정

eb init 명령어를 입력 후 region을 선택하고, 어플리케이션을 선택한다.

region 선택

 

어플리케이션 선택

 

3. ElasticBeanstalk config 파일 수정

eb config 명령어를 입력하여 config 파일에 접근한 뒤, 맨 아래에 aws:rds:dbinstance 설정을 아래와 같이 변경해준다.

aws:rds:dbinstance:
  HasCoupledDatabase: 'false'
  DBEngineVersion: '8.0'

nano 사용법에 익숙하지 않았던 나는, 아래 키 설명대로 ctrl + o 로 저장을 했을 때 따로 저장을 확실하게 끝내고 나가는 단축키가 없어서 당황스러웠다.

당황하지 말고, ctrl + o 를 눌렀으면 Enter를 눌러서 빠져나온 뒤, ctrl + x 로 nano를 종료하면 잘 저장된다.

 

저장을 하면, 바뀐 config에 맞게 환경을 업데이트 한다.

 

이제, ElasticBeanstalk 웹 콘솔에서 정상적으로 RDS를 추가할 수 있다!

 

참고 : https://stackoverflow.com/questions/71209961/cant-set-rds-while-creating-elastic-beanstalk

 

Can't set RDS while creating Elastic Beanstalk

I'm trying to create a Elastic Beanstalk environment with node.js platform. When I try to add RDS in EB, console is throwing error and I don't know the reason why. If you have any idea, plz leave a

stackoverflow.com

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/eb-cli3-install.html