[AWS] Spring boot 랑 RDS Mysql 연동하기 (GitAction, EB)

[AWS] Spring boot 랑 RDS Mysql 연동하기 (GitAction, EB)

전 게시물에서 EB를 이용해 배포를 하였기 때문에, EB 환경에서 데이터베이스(RDS)를 만들어 연동하고자 한다.

Elastic Beanstalk > 환경 > 내 eb 환경 > 구성 > 데이터베이스 편집

여기서 데이터 베이스를 쭉쭉쭉 만들고

사용자 이름과 비밀번호를 기억해 두어야한다. (master 아이디가 된다.)

그럼 이렇게 RDS 가서 보면 데이터베이스가 생긴걸 확인 할 수 있다.

RDS 데이터베이스 페이지

여기서 클릭해 엔드포인트를 기억해 두고,

인바운드 규칙을 편집한다.

VPC 보안그룹 클릭 > 인바운드 규칙 편집 클릭

그다음 해당 데이터베이스의 포트를 열어준다.

나는 mysql을 사용했기 때문에 3306 포트를 열어주엇다.

인바운드 규칙

그 다음 EB 환경변수에 아래의 값들을 추가해 준다.

(EB 환경변수와 인텔리제이 환경변수 추가하는 방법은 이전 게시글을 참고)

RDS 엔드포인트 RDS 포트번호 RDS 유저 아이디 RDS 유저 비밀번호

application.properties

그 다음 스프링 부트와 RDS를 연동해주기위해, 아래의 코드를 추가해준다.

driver 를 추가해주지 않으면, 깃 배포 시 빌드 에러가 난다. (버전에 따라도 에러가 날 수 있으니, 최신버전 확인)

spring.datasource.url=jdbc:mysql://${RDS_HOSTNAME}:${RDS_PORT}/${RDS_DB_NAME} spring.datasource.username=${RDS_USERNAME} spring.datasource.password=${RDS_PASSWORD} spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

이라믄 끝!

+

+

+

깃 배포시 에러

erro code

Caused by: java.lang.IllegalArgumentException at DefaultCacheAwareContextLoaderDelegate.java: 132

caused by org.springframework.beans.factory.beancreationexception at AbsractAutowireCapleBeanFactory.java

caused by org.hibernate.service.spi.serviceexception at AbstractServiceRegistryImpl.java

caused by org.hibernate.hibernateexception at dialectfactoryimpl.java

에러 켑챠

[해결 방법]

application.properties 에 환경변수를 추가하여 생겼던 오류이다.

앱이름SpringApplicationTests.java

위의 TEST파일을 삭제하면 정상적으로 배포가 된다.

에러가 나는 이유는,

빌드할 때 테스트케이스가 실행되게 되어있어, @SpringBootTest가 있는 클래스의 테스트들이 실행되게 되어있는데,

테스트 케이스가 돌아기 위해서는 스프링부트와 마찬가지로 스프링이 실행 된 후 테스트케이스가 실행된다.

따라서 스프링 부트가 실행될때 application.properties에 환경변수를 알아채지 못해 생기는 에러이다.

728x90

반응형

from http://thalals.tistory.com/244 by ccl(A) rewrite - 2021-12-15 19:27:34