RDS를 사용해 PostgreSQL 데이터베이스를 생성 후, 로컬 터미널을 통해 접속을 하려고 하는데 연결 관련 문제가 발생했다. 이전에 작성한 글과 다양한 블로그 글을 참고하여 RDS를 새롭게 생성해도 해결되지 않았다.
다양한 글을 찾아봤을 때 Connection error의 원인으로 꼽혔던 것을 다음과 같다.
퍼블릭 액세스를 '아니요'로 표시한 경우
처음 생성했을 때, 기존에 생성한 ec2와 연결하는 옵션으로 만들었다. 이렇게 생성할 시, 퍼블릭 액세스는 자동으로 '아니요'로 선택된다. 필자처럼 로컬로 접속을 하기 위해선 '예'를 선택해야 한다.
인바운드 규칙을 추가하지 않은 경우
당연스럽게도 인바운드 규칙을 추가해야 외부에서 RDS 내부로의 접근이 가능하다. 깜빡 잊고 해당 설정을 하지 않는 경우가 많으니 주의해야 한다.
공교롭게도 위에서 언급한 두 가지를 설정했는데도 해당 문제가 해결되지 않았다. 확인해본 결과 ec2 인스턴스 내부에서는 RDS 접속에 문제가 없었다. 따라서 추측한 것은 RDS가 Private 서브넷에 존재하여 외부에서의 접근이 불가능 하다는 것이다.
VPC 내의 서브넷은 내, 외부 통신을 위해 라우팅 테이블과 연결되어야 한다. 외부와 통신을 가능하게 하기 위해 라우팅 테이블을 수정한다.
VPC 서비스로 이동 후, 라우팅 테이블 탭으로 이동한다. RDS-Pvt-rt 라우팅 테이블을 선택하고 라우팅 편집을 누른다.
라우팅 추가 버튼을 눌르고 0.0.0.0/0을 입력한다. 대상에는 인터넷 게이트웨이를 선택하면 된다. 변경 사항을 저장하자.
이처럼 설정하면 로컬(VPC 외부)에서 RDS 연결을 할 수 있다.
RDS를 약 1년 만에 사용해봤는데, VPC 관련 기본 설정이 바뀐 것 같다. 문제가 해결되지 않는다면 이와 관련해서도 의심하는 습관을 가져야겠다.
(추가)
이렇게 public 액세스를 가능하게 수정했는데, 다음 날 청구서를 보니 약간의 과금이 청구됐다. 24년 2월부터 ec2 프리티어를 제외한 서비스에서 public 액세스를 허용하면 과금이 발생하는 모양이다.