AWS RDS 세팅 + 연동

ssongyi·2025년 5월 16일
1

Java/Spring TIL

목록 보기
12/22

AWS RDS(Amazon Relational Database Service)

데이터베이스 운영의 번거로운 작업을 AWS가 대신 관리해주는 서비스

즉, DB 설치, 백업, 보안, 복구 등 서버 관리 부담을 줄여주고,
✅ 개발자는 비즈니스 로직에만 집중할 수 있게 해줌

장점


내가 직접 DB 설치할 때 생기는 일

  • 서버에 Ubuntu 설치 → MySQL 수동 설치 → 사용자/포트 설정 → 보안설정…
  • 장애 복구? 직접 로그 찾아서 분석
  • 확장? 서버 사양 교체 후 마이그레이션

😓 정말 시간도 오래 걸리고 귀찮...

👉 그래서 실무에서 "서비스를 빨리 만들고 안정적으로 유지하고 싶다"면
✅ RDS가 훨씬 편하고 안전


세팅 방법

1. AWS 검색창에 RDS 검색하여 Aurora and RDS 클릭

2. 데이터베이스 클릭 + 데이터베이스 생성 클릭

3. 템플릿을 프리티어로 선택해야 무료로 이용이 가능하다!

4. DB 인스턴스 식별자란?

  • AWS RDS에서 이 데이터베이스 인스턴스를 구별하기 위한 이름
  • 이건 AWS 콘솔에서 식별용이지, 실제 DB 이름이랑은 별개
  • DB 인스턴스 이름은 한 번 생성하면 변경 불가
  • 사용자 이름과 비밀번호는 연결 시 반드시 사용하니 꼭 기록해두기!

5. 프리티어 인스턴스 선택하기

  • db.t4g.micro
    - 최신형 버스터블 인스턴스 (t4g)
    • ARM 기반 (Graviton2 CPU)
    • Java 네이티브 라이브러리, 드라이버가 일부 ARM 아키텍처에서 호환 안 되는 경우가 있음
  • db.t3.micro
    - x86 기반, 호환성 걱정 없음
    • 안전하므로 이것으로 선택함

6. EC2 연결 X

EC2 컴퓨팅 리소스 연결이란?

  • AWS에서 RDS 인스턴스를 EC2 서버와 같은 VPC 내부에서 자동 연결해주는 기능
  • 연결 안 해도 RDS는 동작함
  • 대신 본인이 보안 그룹만 잘 설정해주면 됨
    (보안주의: 퍼블릭 액세스를 열었더라도 보안 그룹이 닫혀 있으면 접속 안 됨
    → 아무 IP나 다 허용하면 보안에 위험
    → "내 IP"만 열기 추천)
1. 퍼블릭 액세스 가능: 예
2. 보안 그룹 설정 (반드시 설정 필요!)
	- 인바운드 규칙:
    	- 포트: 3306
        - 타입: MySQL/Aurora
        - 소스: 내 IP만 허용 (My IP)

EC2 (Elastic Compute Cloud)?

AWS에서 제공하는 가상 서버
즉, 내가 직접 운영체제를 설치하고, Spring 서버나 배포용 백엔드를 돌릴 수 있는 컴퓨터를
AWS 상에서 임대해서 쓰는 것

EC2를 쉽게 말하면?

  • 💻 클라우드에 띄운 리눅스/윈도우 컴퓨터 1대
  • 🌐 퍼블릭 IP 주소 있음 → 외부에서 접속 가능
  • 🛠 여기에 Spring Boot 배포, Docker 설치, Nginx 실행 등 다 가능

< 주의사항 >
EC2는 키고만 있어도 시간당 요금이 차감됩니다.

상태과금 여부
인스턴스 실행 중요금 발생 (프리티어 시간 내면 OK)
중지 상태❌ 인스턴스는 요금 없음, ❗스토리지(EBS)는 요금 발생 가능
삭제✅ 완전 요금 제거

7. 퍼블릭 액세스 '예' 설정

✅ 퍼블릭 액세스가 "아니요"일 때 무슨 일이 일어나냐면?
상황 흐름:
- 당신의 RDS는 VPC 내부 전용 DB가 됨 (인터넷에서는 접근 불가)
- Spring Boot 서버가 로컬에서 실행 중 (→ 인터넷이 아닌 RDS 내부 네트워크와 분리됨)
- Postman은 로컬 백엔드 API에 요청을 보냄 →
- 백엔드는 RDS에 접속을 시도함 →
- ❌ 접속 실패: "RDS가 퍼블릭 액세스 안 됨"
→ 결국 Postman은 백엔드를 호출하지만, 백엔드는 DB와 통신하지 못해서 에러가 남 (ex. 커넥션 실패)

항목퍼블릭 액세스: 퍼블릭 액세스: 아니요
내 노트북에서 접속 가능?✅ 예 (보안 그룹 허용 시)❌ 불가능
EC2에서 접속 가능?✅ 가능✅ 가능 (같은 VPC 내일 경우)
Postman → Spring → RDS 가능?✅ 가능❌ RDS 접근 실패
DBeaver, IntelliJ로 DB 접속✅ 가능❌ 불가

퍼블릭 액세스를 예로 하고, EC2 컴퓨팅 리소스 연결을 비활성화해도 전혀 문제 없음 !

설정필수인가요?설명
퍼블릭 액세스: 예✅ 필수 (개발용 외부 접속 시)RDS를 로컬 환경에서 접속하려면 반드시 필요
EC2 연결❌ 비활성화해도 됨그냥 편의 기능, 실제 접속과는 무관
[내 노트북] (Spring Boot, Postman)
       |
       | 인터넷(IP로 접근)
       |
[RDS (퍼블릭 액세스: 예)]
항목설정 여부설명
퍼블릭 액세스✅ "예"외부 접속 가능하게
보안 그룹 설정✅ 내 IP + 포트 3306 열기방화벽 역할
EC2 사용 여부❌ 사용 안 해도 됨개발/테스트엔 필요 없음

RDS 인스턴스 생성 후 보안그룹 생성하기

왜 보안 그룹 설정이 필요할까?

보안 그룹(Security Group)**은 AWS에서 말하는 방화벽
✔ 어떤 컴퓨터(IP)가,
✔ 어떤 포트로,
✔ 내 RDS에 접속할 수 있는지를 설정하는 장치

❗설정하지 않으면?

  • 내 컴퓨터에서 RDS 접속이 절대 불가능
  • 아무리 비밀번호/엔드포인트를 정확히 넣어도, DB 연결 실패(Connection refused) 발생

1. RDB - 대시보드 - VPC 보안 그룹 - 보안그룹 ID 복사

2. EC2 콘솔 - 네트워크 및 보안 - 보안 그룹에 내 RDB 콘솔 검색

3. 인바운드 규칙 편집 - 팀원들 IP 추가 및 저장 (기존 참조된 보안 그룹 규칙 제거)

항목
유형(Type)MySQL/Aurora
프로토콜TCP
포트 범위3306
소스팀원들 IP

IP는 반드시 /32 붙여야 단일 IP로 허용됨

유형을 MySQL/Aurora로 하여 TCP 3306 포트를 자동 설정


RDS 엔드포인트 - application.properties 설정

# DB 연결 정보
spring.datasource.url=jdbc:mysql://song-db-dev.c4bmm8yaax1b.us-east-1.rds.amazonaws.com:3306/데이터베이스이름
spring.datasource.username=admin
spring.datasource.password=여기에비밀번호입력
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA 설정 (선택사항이지만 대부분 함께 씀)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

0개의 댓글