코딩공작소

AWS EC2 <--> RDS 연결 본문

어플리케이션개발/토이프로젝트(취미)

AWS EC2 <--> RDS 연결

안잡아모찌 2024. 10. 22. 23:29

1.1 RDS 보안 그룹 설정

  • AWS 콘솔에서 RDS > 보안 그룹으로 이동하여 수정을 클릭합니다.
  • EC2 인스턴스의 보안 그룹이 RDS MySQL 인스턴스에 접근할 수 있도록 인바운드 규칙을 추가해야 합니다.
    • 프로토콜: TCP
    • 포트 범위: 3306 (MySQL 기본 포트)
    • 소스: EC2 인스턴스가 속한 보안 그룹을 선택하거나, EC2의 IP를 허용 (만약 EC2가 여러개라면 전체 IP를 허용하는 방법도 있지만 보안에 주의).

+++++) 인텔리제이랑 RDS를 연결하려면 사용자지정의 IP의 인바운드규칙도 추가해주어야한다.

 

1.2 EC2 보안 그룹 설정

  • EC2의 보안 그룹에서도 RDS의 포트(3306)에 접근 가능하도록 설정해야 합니다.
  • AWS 콘솔에서 EC2 > 보안 그룹으로 이동하여, 해당 EC2 인스턴스의 보안 그룹을 선택한 후 인바운드 규칙을 편집합니다.
    • 프로토콜: TCP
    • 포트 범위: 3306
    • 소스: RDS 인스턴스가 있는 보안 그룹을 허용

SSH, RDS(MYSQL), http, https, 8008포트 연결을 허용해주는 인바운드 규칙을 설정해준다.

 

--> 기본적으로 아웃바운드 규칙은 anywhere로 설정

 

2. RDS MySQL의 엔드포인트와 연결 정보 확인

  • AWS 콘솔에서 RDS MySQL 인스턴스 세부 정보로 이동하여, **엔드포인트(Endpoint)**와 **포트(3306)**를 확인합니다.
  • 이 정보는 EC2에서 Spring Boot 애플리케이션이 데이터베이스에 연결할 때 사용됩니다.

 

 

3. Spring Boot의 application.properties 또는 application.yml 설정

Spring Boot 애플리케이션에서 RDS MySQL을 사용하려면, 애플리케이션의 데이터베이스 연결 설정을 application.properties 또는 application.yml 파일에 추가해야 합니다.

3.1 application.properties 설정 예시

spring.datasource.url=jdbc:mysql://<RDS_ENDPOINT>:3306/<DB_NAME>?useSSL=false&serverTimezone=UTC
spring.datasource.username=<YOUR_DB_USERNAME>
spring.datasource.password=<YOUR_DB_PASSWORD>
spring.datasource.driver-class-name=http://com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
 //<-- 설정 값에 따라서 애플리케이션 기동 시 데이터가 달라져 유의
 
 

3.2 application.yml 설정 예시

spring:
  datasource:
    url: jdbc:mysql://<RDS_ENDPOINT>:3306/<DB_NAME>?useSSL=false&serverTimezone=UTC
    username: <YOUR_DB_USERNAME>
    password: <YOUR_DB_PASSWORD>
    driver-class-name: http://com.mysql.cj.jdbc.Driver

  jpa:
    hibernate:
      ddl-auto: update
 
  • <RDS_ENDPOINT>: RDS MySQL 엔드포인트 (예: yourdbinstance.abcdefg1234.us-west-1.rds.amazonaws.com)
  • <DB_NAME>: 사용할 데이터베이스 이름
  • <YOUR_DB_USERNAME>: RDS MySQL의 사용자 이름
  • <YOUR_DB_PASSWORD>: RDS MySQL의 비밀번호

 

 

4. MySQL JDBC 드라이버 추가

Spring Boot 애플리케이션에서 MySQL과 통신하려면 MySQL JDBC 드라이버가 필요합니다. build.gradle 파일에 다음 의존성을 추가합니다. (--> 해당 의존성 추가 버전 mysql 8.0 이상 호환XXX  , 아랫 부분 추가 설명)

dependencies {
    implementation 'mysql:mysql-connector-java'
}

5. EC2에서 애플리케이션 실행

  • EC2에 로그인하여 Spring Boot 애플리케이션을 실행합니다. MySQL에 연결된 애플리케이션을 실행하는 명령은 보통 다음과 같습니다:
 

 

<인텔리제이 rds 연결>

 

 


application.properties 파일에 계속 데이터베이스 연결 설정값을 넣어 주면서 하루 삽질을 하고 구글링을 한 끝에,,,,

build.gradle 내용을 아래와 같이 바꿔주니까 빌드 성공 ;;; ㅎ

	implementation 'org.springframework.boot:spring-boot-starter'
	runtimeOnly 'com.mysql:mysql-connector-j'