이 에러로 꼴딱 밤을 새웠다..ㅎㅎ RDS를 지우고 만들고를 몇 번 반복했는지 모르겠다ㅠㅠ
AWS RDS 데이터베이스를 EC2 외에도 외부 IP에서 확인하고 싶었다.(MySQL 워크벤치, Spring 애플리케이션) 하지만 connenction timeout이 발생했다.
힘겹게 해결했던 해당 오류 해결 과정을 남겨 놓는다.
시도
1. 퍼블릭 액세스 여부
가장 기본적이기 때문에 가장 먼저 확인했던 부분인다. RDS를 생성할 때 연결 항목에서 퍼블릭 액세스 여부를 체크할 수 있다. 외부 IP에서 RDS를 사용하고 싶다면 ‘퍼블릭 액세스 가능’으로 체크하자. 하지만 우리는 이미 퍼블릭 액세스를 허용해 놓은 상황이었다.
2. VPC 보안 그룹 인바운드 규칙
퍼블릭 액세스를 허용해도 문제가 해결되지 않는다면 보안 그룹 규칙이 잘 설정되어 있는지 확인해보자
서비스 → 네트워크 및 보안 → 보안 그룹으로 이동한다.
RDS의 보안 그룹에 들어가 인바운드 규칙을 편집한다.
원래 내 IP 주소를 넣어 놨지만 혹시 인바운드 규칙이 문제인가 싶어서 모든 IP 주소가 접근할 수 있도록 열어놨다. 하지만 문제는 해결되지 않았다.
이대로 놔두면 보안 이슈가 발생하기 때문에 인바운드 규칙이 문제인지 확인해 본 후 특정 IP만 접근할 수 있도록 수정해 주자
해결
3. Private 서브넷을 Public 서브넷으로 변경
마지막은 이 문제를 해결해 준 방법이다.
1번과 2번 방법으로도 외부에서 접근할 수 없었던 이유는 RDS가 사용하는 서브넷이 public이 아닌 private으로 설정되어 있기 때문이다.
서브넷을 public으로 변경해 보자
AWS에서 서비스 → VPC → 라우팅 테이블로 이동한다.
RDS가 사용하고 있는 VPC에 접근해서 라우팅 편집을 클릭한다.
처음에 들어가면 local 대상의 라우팅밖에 존재하지 않는다.
라우팅 추가 버튼을 클릭해 준다.
- 첫 번째 대상 : 0.0.0.0/0
- 두 번째 대상 : 마우스로 클릭하면 리스트가 나오는데 ‘인터넷 게이트웨이’를 선택한다. 그러면 igw-xxxx… 형식의 ID가 자동으로 생성된다. 해당 게이트웨이를 클릭한다.
그러면 아래와 같이 되었을 것이다. 변경 사항을 저장해 준다.
가끔 이런 문제가 터지면 머리가 아프다ㅠ
VPC와 서브넷 원리에 대해 좀 더 공부해 봐야겠다.
참조
'AWS' 카테고리의 다른 글
AWS - EC2 환경에서 AccessKey와 SecretAccessKey를 안전하게 관리하기 (0) | 2023.03.10 |
---|---|
AWS - Spring으로 AWS S3에 이미지 업로드하기1: S3 버킷과 IAM 생성 (0) | 2023.03.08 |