Intro

AWS의 인스턴스 컴퓨터인 EC2와 정형화 데이터베이스 시스템인 RDS간 연결 방법을 정리한다.
EC2와 RDS의 생성 및 관리 방법은 이전 포스트에서 다뤘으니,
두 가지가 만들어져있지 않은 경우, 이전 포스트를 참고한 후 본 포스트를 보길 바란다.



연결을 위한 정보 파악

대상 항목 정보 얻는 위치
EC2 보안 그룹 명 AWS -> EC2 -> 인스턴스 -> 보안
EC2 pem 파일 AWS -> EC2 -> 인스턴스 생성 시 다운로드 가능
EC2 연결 정보 AWS -> EC2 -> 인스턴스 선택 -> 연결 -> SSH 클라이언트 등
RDS 엔드포인트 AWS -> RDS -> 상세보기 -> 연결&보안 -> 엔드포인트
RDS 유저 ID AWS -> RDS -> 데이터베이스 생성 시 설정 가능
RDS 유저 PW AWS -> RDS -> 데이터베이스 생성 시 설정 가능



RDS 보안그룹 추가

EC2 보안그룹 생성

EC2 -> 인스턴스 선택 -> 보안 그룹 생성하고
보안 그룹의 이름을 기억해둔다.
(혹은 이미 사용할 보안 그룹이 있다면 해당 그룹을 사용하면 됨)

보안 그룹 명을 클릭해 인바운드 규칙은 상황에 알맞게 설정해준다.
이번의 경우, 테스트로 모든 접속을 허용하도록 설정했다.
*인바운드 규칙 : 외부에서 시도하는 접속에 대한 허용 여부 관리 (IP, PORT)


RDS에 접근 가능 보안그룹 추가

EC2를 통해 RDS로 접속이 가능하게끔,
앞서 만든 보안 그룹에 대해 RDS 접속 권한을 부여한다.

AWS에서 Amazon RDS 메뉴로 이동해준 뒤,
EC2와 연결하고자 하는 RDS를 선택하고, “수정” 버튼을 클릭한다.

연결 섹션의 보안 그룹에서, EC2에서 설정한 보안 그룹을 선택해 추가한다.
아래 예시는 ‘launch-wizard-222222’ 를 추가로 선택한 상황이다.

수정을 위해, 하단의 “계속” 버튼을 클릭한 뒤
이동된 페이지에서 수정사항이 맞는지 확인한다.
이후 “즉시 적용” 및 “DB 인스턴스 수정”을 클릭해 적용한다.




EC2 - RDS 연결

먼저, EC2에 접속해준다.
나의 경우 SSH를 이용한 접속을 진행했다.
(키파일은 EC2 인스턴스 생성시 다운로드 받을 수 있다.)
(user명@ec2 주소는 AWS-EC2-인스턴스-연결-SSH클라이언트 에서 확인 가능.)

1
2
3

ssh -i "키파일 path" user명@ec2주소

RDS 사용을 위해선 SQL문을 사용할 수 있어야 한다.
이를 위해 mysql을 설치해준다.

1
2
3

sudo yum install mysql

SQL 설치가 끝났다면 RDS에 접속해보자.
이 때 RDS의 엔드포인트와 User ID, User PW가 필요하다.

1
2
3
4

mysql -u 유저아이디 -p -h 엔드포인트
Enter password : 유저PW 입력

이상으로 EC2를 이용해 RDS에 접속을 완료했다.
이후는 일반적인 SQL과 같이 사용하면 된다.



추가

혹시 EC2를 거치지 않고 RDS에 접속하고자 한다면, 미리 public access 설정을 하기를 바란다.
관련 포스트 : AWS와 로컬 python 연결 불가 오류

Reference

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_CommonTasks.Connect.html
https://codesyun.tistory.com/303