
Spring Boot 를 AWS 로 배포해보자.
PRJ : Spring Boot (java17)
배포 : Elastic Beanstalk
DB : RDS (MySQL) Elastic Cache Redis
CI/CD : GithubAcations
이전 포스팅에서 Elastic Beanstalk 환경을 구성하고 샘플 애플리케이션 페이지 접속까지 성공적으로 마쳤다.
이제 데이터 베이스를 설정해보자.

Elastic Beanstalk -> 환경 -> 구성 에서 네트워킹 및 데이터베이스 에 구성된 옵션이 없다.
편집 을 클릭해준다.

스크롤을 조금 아래로 내려서 위와 같이(혹은 프로젝트 환경과 같이) 세팅을 해준다.
데이터베이스 활성화 를 시킨다.엔진, 엔진 버전, 인스턴스 클래스 를 설정한다.db.t2.micro 는 프리티어다.사용자 이름, 암호 는 추후 프로젝트와 디비를 연결할 때 사용한다.다른 설정은 해주지 않았다.

위와 같이 설정 후 적용

설정이 완료되는데까지 시간이 꽤 걸린다.

다시 Elastic Beanstalk -> 환경 -> 구성 -> 네트워킹 및 데이터베이스 -> 편집 으로 들어가면 엔드포인트가 생긴 것을 확인할 수 있다.
엔드포인트가 위보다 길다면 설정이 더 빨리 끝났다는 것이다.
끝에 ~com:3306 으로 되어있을텐데,: 을 기준으로 앞이 host, 뒤가 port 다.
엔드포인트 링크를 클릭해 이동한다.

DB 인스턴스 (1/40) 클릭

연결 및 보안에서 엔드포인트를 확인할 수 있다.
~xxx.northeast-2.rds.amazonaws.com 는 host포트 는 port 가 된다. (3306)
다시 Elastic Beanstalk -> 환경 -> 구성 으로 이동 후
스크롤을 내리면 업데이트, 모니터링 및 로깅 이 있다.
편집 클릭

위와 같이 환경 속성 을 설정해준다.
RDS_HOSTNAME : 위의 엔드포인트 (~xxx.rds.amazonaws.com 까지)RDS_PORT : 3306 (엔드포인트 맨 뒤에 숫자 4개 3306)RDS_USERNAME : 연결할 아이디 작성RDS_PASSWORD : 연결할 패스워드 작성RDS_DB_NAME : ebdb (ebdb 고정)오탈자를 잘 확인하자, 다 작성했다면 적용 클릭

데이터 베이스로 이동하자.
RDS -> 데이터 베이스 -> DB 식별자 에서 아까 생성한 DB를 클릭

보안을 설정해줘야한다. VPC 보안 그룹 아래 그룹 링크 클릭

보안 그룹에서 Security group ID 탭을 클릭하면 인바운드 규칙을 설정할 수 있다.
인바운드 규칙 편집 클릭

기존의 설정은 지우고, 유형을 MYSQL/Aurora 소스 Anywhere-IPv4 로 설정한다.
규칙을 저장했다면 연결을 해보자.
스프링 부트에 의존성 추가
# build.gradle
implementation 'mysql:mysql-connector-java:8.0.27'

데이터 베이스 도구로 DBeaver 를 사용하지만 다른 툴도 상관없다.
데이터 베이스를 MySQL 로 설정하고 다음

엔드포인트와 유저 정보를 입력해준다.
아까 설정한 환경 속성과 같은 값이다.
~xxx.rds.amazonaws.com 까지 (RDS_HOSTNAME)3306 (RDS_PORT)ebdb (RDS_DB_NAME)RDS_USERNAMERDS_PASSWORD위와 같이 작성해준다.
Test Connection ... 클릭

연결에 성공했다.

플러그인 Database Navigator 를 설치한다.

DB Browser 가 생길텐데 MySQL 디비를 새로 추가해주자.
이후 연결은 똑같다.

엔드포인트와 유저 정보를 입력해준다.
아까 설정한 환경 속성과 같은 값이다.
~xxx.rds.amazonaws.com 까지 (RDS_HOSTNAME)3306 (RDS_PORT)ebdb (RDS_DB_NAME)RDS_USERNAMERDS_PASSWORD위와 같이 작성해준다.
Test Connection 클릭

연결 성공!!

기존 application.yml 을 설정해준다.
주석된 부분이 기존 설정.
${RDS....} 을 통해 Elastic Beanstalk 에 설정한 환경 속성 값을 읽어온다.