
개요
분명히 구글에 AWS RDS 사용법을 꼼꼼히 살펴보고 만드는 것까지는 문제가 없었는데, 로컬에서 접근하려고 하니까 안된다...
accessKey나 privateKey가 문제인가? 싶어서 지웠다가 만들어도 봤다..
admin의 이름과 password가 endpoint의 문법을 저해하기 때문에 안되나? 싶어서 바꿔도 봤다...
도대체 뭐가 문제일까?
내용
AWS RDS
우선, RDS에 대해서 잠깐 알고 가자면, Relational Database Service의 약자로 AWS에서 호스팅해주는 관계형 데이터 베이스이다.
로컬에서는 데이터를 보관하고 저장, 백업을 하기에는 관리해야 할 내용들이 상당히 많기도하고 AWS에서만 지원해주는 서비스들이 존재하기때문에 보통 프로젝트에서 많이들 사용하곤한다.
에러 발생 이유
구글에 "AWS RDS 구축"를 검색하면 나오는 수많은 블로그들을 살펴보면서 어떻게 해야 RDS를 사용할 수 있는지 살펴봤다.
그리고 하나도 빼먹지 않고 빠짐없이 모든 단계를 수행해서 RDS를 만들었다. Intellij IDEA에서 일반적인 데이터베이스에 접근하는 것처럼 엔드포인트와 포트, admin 이름, admin password를 모두 입력하고 연결 테스트 버튼을 눌러 테스트해봤다.
하지만 한 번에 될리가 없지..
역시 무슨 문제가 생겼다.
처음에 내가 생각한 것은 아래와 같다.
- 내가 Password를 잘못 입력 했나?
- 내가 만든 admin id가 AWS RDS endpoint에 영향을 줘서 접속이 안되는 건가?
- 로컬에서 접속할 때, Postgresql 버전을 안맞춰줘서 그런가?
- AWS 방화벽의 In-Bound 규칙을 설정을 안했나?
이렇게 총 4가지의 선택지가 있었다.
역시 가장 빠른 방법은 1번부터 모두 다 해보는 것이였기에, 하나의 선택지당 하나의 RDS들이 희생되었다.
하지만 이런 해결책들이 모두 실패하는 바람에 2~3시간 정도의 삽질이 되어버렸다.
그래서 가장 근본으로 돌아가서,
내가 AWS 서비스에 접근할 수 있는 이유가 뭘까?
이렇게 생각해보니까, 그냥 인터넷에 연결이 안된게 아닐까? 라는 생각이 먼저 들었다.
AWS VPC
AWS에는 다양한 Origin들이 존재한다.
누구는 서울에 있는 AWS 서버를 사용할 것이고, 미국에 있는 버지니아 북부를 사용하는 사람들도 있을 것이다.
AWS에서 어떠한 서비스를 사용할 때는 VPC라는 공간 위에서 동작하게 되는데, 여기서 VPC는 Virtual Private Cloud의 약자로,
어렵게는 퍼블릭 클라우드 환경에서 사용할 수 있는 고객 전용 사설 네트워크라고 하고, 쉽게는 가상 개인 클라우드라고 생각하면 될 것같다.
따라서 사용자들이 본인의 서비스에 접근하기 위해서는 VPC를 사용해야하는데, VPC에는 직접적으로 접근하는 것은 불가능하다
VPC를 확인해보자

보통 EC2를 만들 때, VPC가 없으면 생성할 수 없기 때문에, 자동으로 VPC가 생성이 된다.
그 다음에 생성 단계에서 서브넷과 라우팅 테이블, 네트연결이 자동으로 매핑이되어, 사용자가 private Key를 가지고 네트워크에 연결해서 서비스에 접근하는 것이 가장 기본적인 구조이다. 물론, 프로젝트 구성상 private로 운영될 필요가 있다면, 다른 서비스를 통해서 접근하기도 한다.
이전 프로젝트에서 RDS를 생성했을 때는 문제가 없어서, VPC쪽을 전혀 의심을 하지 않았는데, 이번에는 생성할 때 뭔가 잘못 건들인건지, 네트워크 연결쪽에 라우팅 테이블이 연결이 안되어 있었다.
해결!
일단 라우팅 테이블을 네트워크에 연결해야하기 때문에, RDS 서비스와 RDS 서브넷에 연결되어 있던 라우팅 테이블을 네트워크에 연결시켜줘야한다. 보통 특정 서비스를 생성할 때 만들어지는 서브넷과 라우팅 테이블들은 접두어로 서비스 네임이 적혀있기 때문에, 해당 라우팅 테이블 페이지로 이동한다.

여기서 엣지 연결 편집에 들어간다.

지금 사진에서는 체크박스가 채워져 있었지만, 이전에는 해제가 되어 있었다.
체크박스를 눌러 체크 해준 후, 변경 사항을 저장한다.
다시 라우팅 테이블에 가보면, 항목이 추가돼있다.

이렇게 네트워크 게이트웨이와 라우팅 테이블을 연결하여 내가 갖고 있는 VPC에 접근할 수 있게 됐다.
이후에, 다시 RDS에 접근해 보니, 정상적으로 연결되는 것을 확인할 수 있었다.
정리
프로젝트가 끝난 이후에 적는 트러블슈팅이다보니, 상대적으로 사진이 없어 제대로 정보를 전달하지 못한 것같아 아쉬움이 남는다.
앞으로는 이슈가 생긴하면 사진부터 찍어두고 봐야겠다.
'Cloud' 카테고리의 다른 글
[AWS] AWS Elasticache란? (0) | 2024.05.07 |
---|

개요
분명히 구글에 AWS RDS 사용법을 꼼꼼히 살펴보고 만드는 것까지는 문제가 없었는데, 로컬에서 접근하려고 하니까 안된다...
accessKey나 privateKey가 문제인가? 싶어서 지웠다가 만들어도 봤다..
admin의 이름과 password가 endpoint의 문법을 저해하기 때문에 안되나? 싶어서 바꿔도 봤다...
도대체 뭐가 문제일까?
내용
AWS RDS
우선, RDS에 대해서 잠깐 알고 가자면, Relational Database Service의 약자로 AWS에서 호스팅해주는 관계형 데이터 베이스이다.
로컬에서는 데이터를 보관하고 저장, 백업을 하기에는 관리해야 할 내용들이 상당히 많기도하고 AWS에서만 지원해주는 서비스들이 존재하기때문에 보통 프로젝트에서 많이들 사용하곤한다.
에러 발생 이유
구글에 "AWS RDS 구축"를 검색하면 나오는 수많은 블로그들을 살펴보면서 어떻게 해야 RDS를 사용할 수 있는지 살펴봤다.
그리고 하나도 빼먹지 않고 빠짐없이 모든 단계를 수행해서 RDS를 만들었다. Intellij IDEA에서 일반적인 데이터베이스에 접근하는 것처럼 엔드포인트와 포트, admin 이름, admin password를 모두 입력하고 연결 테스트 버튼을 눌러 테스트해봤다.
하지만 한 번에 될리가 없지..
역시 무슨 문제가 생겼다.
처음에 내가 생각한 것은 아래와 같다.
- 내가 Password를 잘못 입력 했나?
- 내가 만든 admin id가 AWS RDS endpoint에 영향을 줘서 접속이 안되는 건가?
- 로컬에서 접속할 때, Postgresql 버전을 안맞춰줘서 그런가?
- AWS 방화벽의 In-Bound 규칙을 설정을 안했나?
이렇게 총 4가지의 선택지가 있었다.
역시 가장 빠른 방법은 1번부터 모두 다 해보는 것이였기에, 하나의 선택지당 하나의 RDS들이 희생되었다.
하지만 이런 해결책들이 모두 실패하는 바람에 2~3시간 정도의 삽질이 되어버렸다.
그래서 가장 근본으로 돌아가서,
내가 AWS 서비스에 접근할 수 있는 이유가 뭘까?
이렇게 생각해보니까, 그냥 인터넷에 연결이 안된게 아닐까? 라는 생각이 먼저 들었다.
AWS VPC
AWS에는 다양한 Origin들이 존재한다.
누구는 서울에 있는 AWS 서버를 사용할 것이고, 미국에 있는 버지니아 북부를 사용하는 사람들도 있을 것이다.
AWS에서 어떠한 서비스를 사용할 때는 VPC라는 공간 위에서 동작하게 되는데, 여기서 VPC는 Virtual Private Cloud의 약자로,
어렵게는 퍼블릭 클라우드 환경에서 사용할 수 있는 고객 전용 사설 네트워크라고 하고, 쉽게는 가상 개인 클라우드라고 생각하면 될 것같다.
따라서 사용자들이 본인의 서비스에 접근하기 위해서는 VPC를 사용해야하는데, VPC에는 직접적으로 접근하는 것은 불가능하다
VPC를 확인해보자

보통 EC2를 만들 때, VPC가 없으면 생성할 수 없기 때문에, 자동으로 VPC가 생성이 된다.
그 다음에 생성 단계에서 서브넷과 라우팅 테이블, 네트연결이 자동으로 매핑이되어, 사용자가 private Key를 가지고 네트워크에 연결해서 서비스에 접근하는 것이 가장 기본적인 구조이다. 물론, 프로젝트 구성상 private로 운영될 필요가 있다면, 다른 서비스를 통해서 접근하기도 한다.
이전 프로젝트에서 RDS를 생성했을 때는 문제가 없어서, VPC쪽을 전혀 의심을 하지 않았는데, 이번에는 생성할 때 뭔가 잘못 건들인건지, 네트워크 연결쪽에 라우팅 테이블이 연결이 안되어 있었다.
해결!
일단 라우팅 테이블을 네트워크에 연결해야하기 때문에, RDS 서비스와 RDS 서브넷에 연결되어 있던 라우팅 테이블을 네트워크에 연결시켜줘야한다. 보통 특정 서비스를 생성할 때 만들어지는 서브넷과 라우팅 테이블들은 접두어로 서비스 네임이 적혀있기 때문에, 해당 라우팅 테이블 페이지로 이동한다.

여기서 엣지 연결 편집에 들어간다.

지금 사진에서는 체크박스가 채워져 있었지만, 이전에는 해제가 되어 있었다.
체크박스를 눌러 체크 해준 후, 변경 사항을 저장한다.
다시 라우팅 테이블에 가보면, 항목이 추가돼있다.

이렇게 네트워크 게이트웨이와 라우팅 테이블을 연결하여 내가 갖고 있는 VPC에 접근할 수 있게 됐다.
이후에, 다시 RDS에 접근해 보니, 정상적으로 연결되는 것을 확인할 수 있었다.
정리
프로젝트가 끝난 이후에 적는 트러블슈팅이다보니, 상대적으로 사진이 없어 제대로 정보를 전달하지 못한 것같아 아쉬움이 남는다.
앞으로는 이슈가 생긴하면 사진부터 찍어두고 봐야겠다.
'Cloud' 카테고리의 다른 글
[AWS] AWS Elasticache란? (0) | 2024.05.07 |
---|