문제 상황
MacBook CLI에서 AWS RDS(PostgreSQL)에 접속을 시도했으나 연결 실패.
psql -h 엔드포인트 \
-U username \
-d dbname \
-p 5432
오류 메시지:
psql: error: connection to server failed
네트워크 진단 결과:
ping <엔드포인트>
# → Request timeout
nc -vz <엔드포인트> 5432
# → Operation timed out
즉, RDS 인스턴스가 외부에서 접근 불가능한 상태임을 확인.
🔍 원인 분석
- RDS가 Private Subnet에 존재함
- 인터넷 게이트웨이(IGW) 미연결 상태
- VPC에는 IGW가 존재했지만, RDS 서브넷 라우트 테이블(RDS-Pvt-rt)에는 연결되어 있지 않았음.
- Mac → RDS 직접 통신 불가능
- 퍼블릭 접근이 비활성화된 RDS는 외부에서 psql로 접속할 수 없음.
⚙️ 해결 과정
1. 인터넷 게이트웨이(IGW) 생성 및 연결
- 콘솔 경로: VPC → 인터넷 게이트웨이 → 생성
- VPC 연결: vpc-0200d06ef7532123
IGW 이름: my-rds-igw VPC 연결: vpc-0200d06ef7532123
2. 퍼블릭용 라우팅 테이블 생성 및 구성
3. 퍼블릭 서브넷 연결
- “서브넷 연결” 탭에서 외부 접근용 서브넷 선택 (예: RDS-Pub-subnet-1)
- “서브넷 연결 편집” → RDS-Public-rt 연결
💡 해당 서브넷의 속성에서 Auto-assign public IPv4 옵션을 활성화해야 퍼블릭 IP가 자동 부여됨.
4. RDS 설정 수정
- 콘솔 → RDS → 인스턴스 선택 → 수정(Edit)
- 연결 섹션에서:
- 퍼블릭 액세스 가능 여부: ✅ 예(Yes)
- 서브넷 그룹: 퍼블릭 서브넷이 포함된 그룹으로 교체
- 저장 후 재시작.
5. 외부 접속 테스트
성공 시:
Connection to ... port 5432 [tcp/postgresql] succeeded!
✅ 결과
- 외부(MacBook)에서 RDS(PostgreSQL)에 성공적으로 접속 확인.
- 0.0.0.0/0 → igw-xxxx 라우트가 연결되지 않았던 것이 핵심 원인이었음.
- IGW를 추가하고 퍼블릭 서브넷을 구성함으로써 해결 완료.
💡 배운 점 (Key Takeaways)
- RDS가 위치한 서브넷이 어떤 라우팅 테이블을 사용하는지 항상 확인해야 한다.
- 0.0.0.0/0 → IGW 가 없으면 외부 인터넷 접근 불가.
- 퍼블릭 액세스 가능 RDS는 보안 그룹에서 IP 접근 제한 설정을 꼭 해야 한다.
- Private RDS를 유지하려면 Bastion EC2를 통한 내부 접근을 고려할 수 있다.