[DataBase] 퍼블릭 액세스 제한 후 RDS와 EC2 연결하기

2025. 6. 4. 22:45·Infra & Cloud
목차
  1. 1. RDS 생성
  2. 2. RDS와 EC2의 네트워크 환경 확인
  3. 3. EC2 와 RDS 간의 보안 그룹 설정
  4. 🔹 RDS의 보안 그룹 (Inbound Rule) 설정
  5. 🔹 EC2의 보안 그룹 설정 (Outbound Rule)
  6. 4. EC2 내에서 DB에 접속해야 할 db-cli 설치
  7. 5. Spring application.yml 설정
  8. 🔹 올바른 RDS 엔드포인트 사용 (프라이빗 엔드포인트)
  9. 참고
반응형

문제 상황

  • RDS 퍼블릭 액세스를 차단하고 난 뒤, EC2에서 DB 접속에 문제가 발생함
  • docker-compose와 ci-cd 로직 및 rds와 ec2의 보안그룹 문제라고 판단함.

 

 

1. RDS 생성

→ 생성 시 퍼블릭 액세스 차단으로! (퍼블릭 IP로 인한 Virtual IP 비용 청구됨)

→ Postgresql DB를 활용할 예정이므로, psql을 기준으로 설명하겠음.

 

 

2. RDS와 EC2의 네트워크 환경 확인

  1. AWS 콘솔 → EC2 → 해당 인스턴스 선택 → 네트워크 인터페이스 확인
  2. AWS 콘솔 → RDS → 해당 DB 인스턴스 선택 → VPC 및 서브넷 정보 확인
  3. EC2와 RDS가 같은 VPC 및 서브넷에 있는지 확인

 

3. EC2 와 RDS 간의 보안 그룹 설정

퍼블릭 액세스를 차단한 경우, EC2에서만 접근 가능하도록 RDS 보안 그룹을 설정해야 한다.

🔹 RDS의 보안 그룹 (Inbound Rule) 설정

  1. AWS 콘솔 → RDS → 보안 그룹 설정 이동
  2. 인바운드 규칙 추가
    • Type: PostgreSQL(5432) 또는 MySQL(3306)
    • Protocol: TCP
    • Port Range: 5432 (PostgreSQL) 또는 3306 (MySQL)
    • Source: EC2의 보안 그룹 선택

📌 RDS가 EC2 인스턴스와 통신할 수 있도록 RDS 보안 그룹에서 EC2의 사설 IP 또는 **VPC 내부에서의 접근 (보안그룹)**을 허용해야 한다.

 

✅ 0.0.0.0/0 (퍼블릭) 허용 X

 

🔹 EC2의 보안 그룹 설정 (Outbound Rule)

  1. AWS 콘솔 → EC2 → 해당 인스턴스의 보안 그룹 설정 이동
  2. 아웃바운드 규칙 추가
    • Type: All traffic
    • Protocol: ALL
    • Destination: RDS의 보안 그룹 선택

✅ EC2가 RDS로 나가는 요청을 허용해야 함

 

 

4. EC2 내에서 DB에 접속해야 할 db-cli 설치

sudo apt install -y postgresql-client

psql 테스트

psql -h <RDS-PRIVATE-ENDPOINT> -p 5432 -U <DB_USER> -d <DB_NAME>

 

 

5. Spring application.yml 설정

🔹 올바른 RDS 엔드포인트 사용 (프라이빗 엔드포인트)

퍼블릭 액세스를 차단했으므로 프라이빗 엔드포인트를 사용해야 함.

spring:
  datasource:
    url: jdbc:postgresql://<RDS-PRIVATE-ENDPOINT>:5432/<DB_NAME>
    username: <DB_USER>
    password: <DB_PASSWORD>
    driver-class-name: org.postgresql.Driver

 

📌 MySQL을 사용할 경우

spring:
  datasource:
    url: jdbc:mysql://<RDS-PRIVATE-ENDPOINT>:3306/<DB_NAME>?serverTimezone=UTC
    username: <DB_USER>
    password: <DB_PASSWORD>
    driver-class-name: com.mysql.cj.jdbc.Driver

<RDS-PRIVATE-ENDPOINT> 는 RDS 콘솔에서 확인 가능

추가

  • docker-compose.yml에 환경변수가 들어가지 않는 문제 발생
  • 따라서 ci-cd.yml 파일 수정

(.env 파일 안에 환경변수들을 추가하면 docker가 알아서 컨테이너 환경변수에 추가)

  • 또한, yml 파일을 환경변수로 쓰기 위해 docker-compose.yml에서 환경변수 삽입 영역을 삭제

참고

https://velog.io/@tlsdmsgp33/AWS-RDS-퍼블릭-액세스-허용안할-시-스프링부트-yml-설정-방법SSH-터널링-AWS-과금-문제

 

[AWS RDS] 퍼블릭 액세스 허용안할 시 스프링부트 yml 설정 방법(SSH 터널링) , AWS 과금 문제

정말 이 부분때문에 고생했습니다..저처럼 헤매는 분들이 없기를 바라며 글을 작성했습니다!분명 프리티어 기간이 남았는데도 불구하고 프로젝트에서 사용하는 aws 계정에서 과금이 됐습니다.

velog.io

 

https://coasis.tistory.com/77

 

[AWS] 프리티어 RDS PostgreSQL DB생성과 연결하기 : 초보자도 쉽게 따라하기

0. 들어가기 전 프리티어는 완전한 무료가 아니며, 잘못 설정하면 과금이 발생할 수 도 있습니다.최대한 과금이 나올 요소들을 체크를 안하며 어떻게 생성하는지 초보자도 따라 할 수 있게 만들

coasis.tistory.com

https://yerim-coding.tistory.com/68

 

[AWS] AWS RDS 인스턴스 생성 및 연결하기(PostgreSQL)

이제 AWS 에서 제공해주는 관리형 서비스인 RDS(Relational Database Service)를 생성해 보겠습니다. ✅ RDS란? AWS에서 지원하는 클라우드기반 관계형 데이터베이스 하드웨어 프로비저닝, 데이터베이스 설

yerim-coding.tistory.com

 

반응형

'Infra & Cloud' 카테고리의 다른 글

[Apache Kafka] Kafka Producer의 데이터 멱등성 보장하기  (0) 2025.03.26
[Apache Kafka] kafka 파헤치기  (2) 2025.03.25
[EC2] 인스턴스 HikariCP Connection 고갈 문제  (2) 2025.01.28
[Nginx] 413 Request Entity Too Large 오류  (3) 2024.11.27
  1. 1. RDS 생성
  2. 2. RDS와 EC2의 네트워크 환경 확인
  3. 3. EC2 와 RDS 간의 보안 그룹 설정
  4. 🔹 RDS의 보안 그룹 (Inbound Rule) 설정
  5. 🔹 EC2의 보안 그룹 설정 (Outbound Rule)
  6. 4. EC2 내에서 DB에 접속해야 할 db-cli 설치
  7. 5. Spring application.yml 설정
  8. 🔹 올바른 RDS 엔드포인트 사용 (프라이빗 엔드포인트)
  9. 참고
'Infra & Cloud' 카테고리의 다른 글
  • [Apache Kafka] Kafka Producer의 데이터 멱등성 보장하기
  • [Apache Kafka] kafka 파헤치기
  • [EC2] 인스턴스 HikariCP Connection 고갈 문제
  • [Nginx] 413 Request Entity Too Large 오류
류건
류건
개발 일지
  • 류건
    건's Dev
    류건
  • 전체
    오늘
    어제
    • 분류 전체보기 (97)
      • Back-end (56)
        • Spring (31)
        • Nest.js (3)
        • Next.js (2)
        • Node.js (3)
      • Infra & Cloud (21)
        • Cloud Computing (6)
        • Docker (3)
        • AWS (7)
      • Java (2)
      • Computer Science (12)
        • Computer Network (0)
        • Operating System (0)
        • 정보 보호와 시스템 보안 (12)
        • Software Architecture (0)
      • 회고록 (2)
        • 우아한테크코스 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    https
    Spring
    express.js
    WebClient
    고가용성
    어노테이션
    aws
    CI/CD
    ddl-auto
    Docker
    정보보호
    오블완
    JWT
    CD
    Lock
    CORS
    EC2
    db
    nginx
    보안
    티스토리챌린지
    Kafka
    node.js
    JPA
    Webflux
    Github Actions
    Nest.js
    public key
    ssl
    Spring Boot
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
류건
[DataBase] 퍼블릭 액세스 제한 후 RDS와 EC2 연결하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.