728x90

https://ap-northeast-2.console.aws.amazon.com/rds/home?region=ap-northeast-2#

 

https://ap-northeast-2.console.aws.amazon.com/rds/home?region=ap-northeast-2

 

ap-northeast-2.console.aws.amazon.com

 

1. AWS 에 접속하여 RDS로 이동한다.

데이터베이스 생성을 클릭한다.

 

2. 데이터베이스를 생성한다.

표준 생성 - 사용하고 싶은 데이터 베이스 선택

 

연습용이므로 프리티어를 선택한다.

 

DB 인스턴스 식별자, 사용자 이름, 비밀번호를 설정한다.

사용자 이름과 비밀번호는 스프링부트 프로젝트 연동시 필요하므로 까먹지 않도록 한다.

 

여기서부터 설정을 잘못할 경우 과금이 발생하므로 주의하도록 한다.

db.t2.micro 선택

 

스토리지 자동 조정 해제!

 

컴퓨터 리소스 : EC2 컴퓨팅 리소스 연결 선택시 EC2와 자동으로 연결해주지만, 새롭게 보안그룹을 생성할 것이므로 연결 안함을 선택한다.

퍼블릭 액세스 : '아니오'를 선택할 경우 공공IP가 할당되지 않아, 외부에서 접근이 불가능하다. EC2 서버 내부에서 뿐만 아니라 로컬에서 접근하기 위해 '예'로 지정한다.

 

보안 그룹은 '새로 생성'을 눌러 새롭게 보안그룹을 생성하여 적용할 것이다. 기존에 작성해둔 보안 그룹이 있다면 그대로 진행해도 괜찮다.

추가 구성을 눌러 데이터베이스에 생성될 DB의 이름을 지정한다.(기억해둬야 한다.)

백업은 자동 백업을 해제한다.(사이드 프로젝트, 연습용에서는 백업이 필요없으며, 활성화가 되어있을 경우 스냅샷을 생성하는 과정에서 DB 메모리를 많이 사용한다. 과금요소)

 

이후 확인을 누르면 아래 페이지로 넘어가진다. 잠시 기다려주면 사용 가능 상태가 된다.

 

3. 보안규칙 설정

이전 페이지에서 DB 식별자 페이지를 눌러 상세 정보 페이지로 이동한다. 내리다보면 보안 그룹 규칙 부분이 보인다.

인바운드 보안 그룹을 클릭하여 이동한다.

 

보안 그룹 ID를 클릭한다.

 

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

 

아래와 같이 입력한다.

3306(MySQL), 8080(Spring), 80(HTTP), 443(HTTPS)의 포트를 허용하는 과정이며, Anywhere-IPv4를 선택하여 모든 IP에 대해서 허용하도록 한다. 특정 IP만 허용하도록 하는 것 또한 가능하다.

 

아래와 같이 인바운드 규칙이 설정되면 성공이다.

 

4. 파라미터 그룹 생성

이어서 파라미터 그룹을 생성하고 적용한다. 파라미터 그룹에서는 time-zone, character-set 설정등 기본적인 데이터베이스 형식 설정이 가능한다.

왼쪽의 메뉴에서 파라미터 그룹을 클릭한다.

 

파라미터 그룹 생성을 클릭한다.

 

우리의 데이터베이스 버전에 맞춰 파라미터 그룹 패밀리를 설정한다.

유형은 그대로 두고, 그룹 이름은 구분하기 편하게 데이터베이스 이름과 유사하게 작성한다.

 

생성된 그룹으로 들어와서 편집 버튼을 누른다.

 

char를 검색하고 변경가능한 모든 값에 대하여 utf8을 적어준다.

 

이어서 collation을 검색하고, 나온 두 값 모두 utf_general_ci로 변경해준다.

 

이제 편집한 파라미터 그룹을 적용시켜보자.

데이터베이스를 클릭하고 수정을 누른다.

 

앞서 생성한 파라미터 그룹을 선택하고 수정을 완료한다.

 

빠른 적용을 위해 즉시 수정을 선택하고 인스턴스 수정을 완료한다.

 

5. MySQL WorkBench 에서 연결

데이터 베이스 연결을 테스트 하기 위해 MySQL WorkBench에 연결해볼 것이다.

상세 정보 페이지로 이동하여 엔드 포인트를 복사한다.

 

MySQL Workbench의 홈 화면에서 + 버튼을 클릭한다.

 

Hostname에 앞서 복사했던 엔드포인트를 입력하고, Username과 Password는 데이터베이스 생성시 설정했던 아이디와 비밀번호를 입력하도록 한다.

 

생성 이후 아래와 같이 접속에 성공한다면 잘 연결 된 것이다.

 

6.스프링부트 연결

resources - application.properties 를 생성한다.

 

application.properties에 아래 코드를 복사하여 붙여넣는다.

# DB
spring.jpa.database=mysql
spring.jpa.show-sql=true

# MySQL Server (Local)
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
# ??? ?? ? update? ??, ?? ????? update ??!
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#MySQL Server (Deploy)
#spring.datasource.url=
#spring.datasource.username=
#spring.datasource.password=
#spring.jpa.hibernate.ddl-auto=update

# ?? ? SSL, HTTP -> HTTPS ?? ??

 

url 부분에 생성된 데이터베이스의 엔드포인트를 아래와 같이 작성한다.

jdbc:mysql://<엔드포인트>:[port]/<생성한 DB이름>

username과 password는 데이터베이스를 생성할때 설정한 아이디와 비밀번호를 작성한다.

모두 작성하였다면 오른쪽 상단의 코끼리 버튼을 눌러 동기화를 해준다.

 

이후 build.gradle로 이동하여 runtimeOnly 'mysql:mysql-connector-java:8.0.33'를 추가해준다.

버전은 잘 확인해보고 최신 버전으로 맞추면 된다.

dependencies {
	runtimeOnly 'mysql:mysql-connector-java:8.0.33' // Connect AWS RDS

	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.mysql:mysql-connector-j'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

동기화 이후 서버를 실행했을 때 오류 문구 없이 잘 작동한다면 연동에 성공한 것이다.

 

보다 정확한 테스트를 위해 테이블을 하나 만들어보자.

Test.class 를 추가해준다. @Entity에 의해 스프링 프레임워크가 데이터베이스 테이블을 생성해준다.

package com.example.deploy.domain;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;

@Entity
public class Test {
    @Id @GeneratedValue
    private Long id;
    private String name;
}

 

MySQL WorkBench에서 test 테이블이 생성된 것을 확인할 수 있다.

+ Recent posts