여태까진 RDS를 생성하고 보안 그룹에서 인바운드를 내 로컬 ip를 추가해주면 로컬에서 정상적으로 접속이 됐었는데 이번 프로젝트에서 생성을 하니 연결이 되질 않았다.
퍼블릭 액세스를 차단한 것도 아니고
인바운드를 안열어놓은것도아니고
admin 비밀번호를 잘못 친 것도 아니고..
도저히 답이 안나왔다.
여러가지 찾아보던 중 아주 신박한 사실을 알았다..
이게 이번 프로젝트에서 RDS를 만들고 난 후 AWS->VPC-> 라우팅 테이블의 상태이고
이게 다른 프로젝트의 라우팅 테이블 상태이다.
보면 RDS-Pvt-rt라는 놈이 추가로 생성되어 있는 걸 볼 수 있다.
말은 상당히 직관적인데, RDS의 Private RoutingTable이란 뜻이다.
즉, 지금 RDS가 private subnet안에 존재한다는 것이다.
원래는 default가 public subnet라고 생각했는데 언제부턴지 모르겠지만 private subnet으로 바뀐 것 같다;;
서브넷 탭을 들어가봐도 RDS-Pvt로 시작하는 친구들이 생성되어 있는걸 볼 수 있다.
즉, 로컬에서 인바운드를 열어놓아도 접속이 안됐던 이유는 rds 인스턴스가 private subnet에 존재해서 EC2인스턴스로만 접근이 가능한 상태였기 떄문이다.
당연히 이게 훨씬 보안적으로 좋고 권장되는 사항이라 생각하지만 프로젝트를 이제 막 진행하는 터라 DB의 변동이 잦을 것이고 팀프로젝트이기에 여러 사람이 DB에 접근해야 할 것이라 생각되어 각자 집의 ip에서 rds로 접속을 열어놓기로 결정했다.
방법은 간단하다.
라우팅 테이블에서 rds 테이블 편집을 눌러주면
이런 화면이 나온다. (아무 설정을 하지 않았다면 맨위의 로컬 주소만 존재할 것이다.)
그러면 자신의 로컬 ip를 추가하고( 모르겠으면 인바운드 편집에서 내 IP를 선택하면 나오는 IP를 복사해서 붙여넣어준다) 대상은 "인터넷 게이트웨이"를 선택하고 저장한다.
그러면, 이렇게 DB연결에 성공한 것을 볼 수 있다 !
Devops분야는 분명 학교 전공때 배운 부분이 참 많이 연관되어 있는데, 너무 낯설다.. 나중에 프로젝트 다 끝나고 시간적 여유가 있으면 데이터통신, 컴퓨터통신 같은 과목들 다시 한번 공부해야할 것 같다.
참고
https://gksdudrb922.tistory.com/240
https://repost.aws/ko/knowledge-center/rds-connectivity-instance-subnet-vpc
'DevOps' 카테고리의 다른 글
React+Github Action+AWS로 CI,CD 하기 (0) | 2023.05.01 |
---|---|
[Github actions, secret]github workflow로 배포 시 json 파일 추가하기 (0) | 2023.04.29 |
Github secret으로 배포용 application.yml 암호화 하기 (0) | 2023.04.17 |
GitHub Action, AWS S3,CodeDeploy, EC2로 CI, CD해보기 (2) (0) | 2023.04.16 |
GitHub Action, AWS S3,CodeDeploy, EC2로 CI, CD해보기 (1) (1) | 2023.04.16 |