[AWS] EC2 배포(1) - 스프링 부트 RDS 연결 및 IAM 설정

 

이번 시간에는 스프링부트에 AWS의 Relational Database Service

 

RDS를 데이터베이스로 연결해보는 과정을 알아보겠다.

 

 

 

:: RDS란 ::

아마존 RDS는 아마존 웹 서비스가 서비스하는 분산 관계형 데이터베이스이다. 애플리케이션 내에서 관계형 데이터베이스의 설정, 운영, 스케일링을 단순케 하도록 설계된 클라우드 내에서 동작하는 웹 서비스이다.

 

 

 

아예 AWS를 처음 접하는 사람들도 쉽게 따라할 수 있도록 차근차근 설명하겠다.

 

 


 

 

1. IAM 생성

 

우선 AWS 계정이 없다면 아래 게시물을 따라서 프리티어 계정을 생성해보자.

 

 

[AWS] Amazon Web Service 회원 가입 하는 법

반갑습니다. 오늘은 AWS 회원가입 방법에 대해 알아보겠습니다. AWS 회원가입 이번 시간에는 무료 이용 버전인 프리티어로 가입하는 방법에 대해 설명할 것이다. 참고하도록 하자. 프리티어는 AWS

pgmjun.tistory.com

 

계정을 생성했다면 IAM을 생성해야한다.

 

IAM이란 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다.

 

IAM을 사용하면 생성한 IAM에 허가된 권한에 대한 서비스만 사용할 수 있다.

 

쉽게 말해서 만약 "AWS S3 사용권한만 받은 IAM이 있다면 그 IAM을 통해선 S3만 사용할 수 있다는 것" 이다.

 

아래를 보고 따라해보자

 

 

IAM 생성(1)

 

AWS에 접속해 IAM을 검색한다.

 

IAM 생성(2)

 

IAM의 사용자 탭 클릭

 

IAM 생성(3)

 

사용자 추가를 클릭한다.

 

IAM 생성(4)

 

사용자 이름 을 입력하고 엑세스 키 방식을 선택한다.

 

IAM 생성(5)

 

IAM의 권한을 설정하는 탭이다.

 

EC2 배포 관련 권한과 앞으로 사용할 권한을 모두 넣었으니 우선 전부 넣어주도록 하자.

 

IAM 생성(6)

 

이 부분은 태그를 추가하는 부분이다.

 

당장은 필요 없으니 넘어간다.

 

IAM 생성(7)

 

마지막으로 권한이 잘 설정되었는지 확인하고 사용자 만들기 클릭

 

IAM 생성(8)

 

.csv는 IAM을 사용하기 위해 꼭 필요하므로 다운받자.

 

지금 페이지를 벗어나면 다신 다운 받을 수 없어 IAM을 새로 생성해야하는 불상사가 발생한다.

 

 


 

 

2. RDS 생성

 

IAM 생성이 끝났으니 RDS를 생성해보자.

 

RDS 생성(1)

 

RDS를 검색해 데이터베이스 생성 버튼을 클릭한다.

 

 

RDS 생성(3)

 

우리는 무료 버전을 이용한 것이므로 프리 티어를 선택해주자.

 

RDS 생성(4)

 

- 인스턴스 식별자: DB Name

 

- 마스터 사용자 이름: User Name

 

- 마스터 암호: User PW

 

RDS 생성(5)

 

이 부분은 자동으로 설정되는 부분인데 무료 버전에 맞춰져 세팅되어 있으므로 건드리지 않고 넘어간다.

 

RDS 생성(6)

 

연결 설정은 위와 동일하게 해주는데

 

퍼블릭 엑세스는 아래와 같이 로 선택한다.

 

 

보안 그룹 설정은 RDS 생성을 마친 후에 이어서 하도록 하겠다.

 

 

 

 

추가 구성 - 초기 데이터베이스 이름 설정

 

추가 구성 탭에선 초기 데이터베이스의 이름을 지정할 수 있다.

이때 지정해주어야 따로 db에 접속하여 create database 명령을 해주는 귀찮음을 감수할 수 있다.

 

 

 

RDS 생성(7)

 

또한 추가 구성 하단에 있는 자동 백업 활성화를 꺼준다.

 

백업은 좋은 기능이지만 스냅샷을 생성하는 것은 유료 서비스이다.

 

완전 최소한의 금액을 사용하고 싶다면 이 부분을 비활성화 해주자.

 

RDS 생성(8)

 

세팅이 끝났으니 데이터베이스 생성을 눌러주고 RDS에 적용할 보안 그룹을 생성 또는 설정해준다.

 

RDS 생성(9)

보안 그룹을 클릭한 뒤 인바운드 규칙 변경을 선택하면 이러한 화면이 나온다. 

 

 

유형: MYSQL/Aurora

포트: 3306

소스: Anywhere - IPv4  

 

이 설정을 안해주면 mysql 접속 시 60 error를 표출한다.

 

이것은 EC2에 적용되는 보안그룹 중 RDS에만 관련된 설정이기 때문에 EC2 배포(2)에서 내용이 더 추가될 것이다.

 


 

 

3. 스프링부트 프로젝트 세팅

 

 

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'mysql:mysql-connector-java'

 

application.yml

spring:

  datasource:
    url: ${MYSQL_URL}
    username: ${MYSQL_USERNAME}
    password: ${MYSQL_PW}
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 30

  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true
    properties:
      hibernate:
        format_sql: true

    hibernate:
      ddl-auto: update
      naming:
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    generate-ddl: true
    open-in-view: false

 

${MYSQL_USERNAME}과 ${MYSQL_PW} 부분은 아까 RDS 설정 과정에서 입력했던

 

마스터 사용자 이름마스터 암호를 그대로 입력해주면 되고

 

엔드포인트

 

url은 jdbc:mysql://엔드포인트:3306/db이름(databaseName) 으로 설정하면 된다.

 

 

이렇게 하면 설정은 끝나지만 이렇게 중요한 키값들이 노출되어 있는 상태로 프로젝트를 git에 커밋하기 위해선

 

키값을 숨겨주거나 application.yml을 gitignore해야한다.

 

gitignore도 좋은 방법이지만 해당 프로젝트를 다른 환경에서 세팅하여 지속적으로 개발한다고 생각하면

 

상당히 불편한 상황이 벌어진다.

 

그래서 난 AWS Secrets Manger를 채택했다.

 

시크릿 매니저를 이용하면 위처럼 ${}로 키값을 대입시켜 사용할 수 있어 프로젝트 그대로 git에 업로드가 가능하다.

 

 

 

[AWS] 스프링부트 AWS Secrets Manager 적용하기!

프로젝트를 진행하다보면 gitignore 설정을 깜빡해 aws 관련 주요 키정보를 노출하게 되는 등 민감한 보안 문제가 발생한다. 주로 application.yml 이나 application.propertise가 깃 레퍼지토리에 커밋 되었을

pgmjun.tistory.com

 

위 게시물을 통해 Secrets Manager 설정 방법을 확인할 수 있으니 필요하다면 참고하도록 하자.

 


 

3. AWS 구성 설정 (AWS CLI)

 

AWS 구성 설정은 프로젝트에서 AWS 관련 기술을 사용한다면 필수적인 부분이기 때문에

 

RDS나 Secrets Manager를 사용한다면 필수적으로 해주어야한다.

 

 

 

[AWS] AWS CLI 설치 및 aws configure 설정법

EC2, SecretManager등 AWS 관련 기술을 쓰기 위해서는 AWS CLI을 설치하고 git bash 에서 "aws configure" 명령어로 설정을 해주어야 한다. AWS CLI 이란 AWS 서비스를 관리하는 통합 도구다. 도구 하나만 다..

pgmjun.tistory.com

 

위 게시글을 따라 CLI를 설치하고 설정해보자!

 


 

4. MySQL 워크벤치 연결

 

RDS를 MySQL 워크벤치에도 연결하고 싶다면 아래 게시물을 따라 연결해보자!

 

 

[MySQL] MySQL 워크벤치 설치법

MySQL을 사용자가 SQL구문을 통해 직접 데이터를 조작해야하는 상황이라면, MySQL 워크벤치 설치를 통해 간단하게 조작할 수 있다. 이번 시간엔 해당 워크벤치의 설치법과 간단한 사용법 대해 알아

pgmjun.tistory.com