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_USERNAME
RDS_PASSWORD
위와 같이 작성해준다.
Test Connection ...
클릭
연결에 성공했다.
플러그인 Database Navigator
를 설치한다.
DB Browser
가 생길텐데 MySQL
디비를 새로 추가해주자.
이후 연결은 똑같다.
엔드포인트와 유저 정보를 입력해준다.
아까 설정한 환경 속성과 같은 값이다.
~xxx.rds.amazonaws.com
까지 (RDS_HOSTNAME
)3306
(RDS_PORT
)ebdb
(RDS_DB_NAME
)RDS_USERNAME
RDS_PASSWORD
위와 같이 작성해준다.
Test Connection
클릭
연결 성공!!
기존 application.yml
을 설정해준다.
주석된 부분이 기존 설정.
${RDS....}
을 통해 Elastic Beanstalk
에 설정한 환경 속성 값을 읽어온다.