[AWS] Spring boot 랑 RDS Mysql 연동하기 (GitAction, EB)
전 게시물에서 EB를 이용해 배포를 하였기 때문에, EB 환경에서 데이터베이스(RDS)를 만들어 연동하고자 한다.
Elastic Beanstalk > 환경 > 내 eb 환경 > 구성 > 데이터베이스 편집
여기서 데이터 베이스를 쭉쭉쭉 만들고
사용자 이름과 비밀번호를 기억해 두어야한다. (master 아이디가 된다.)
그럼 이렇게 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에 환경변수를 알아채지 못해 생기는 에러이다.