Posts AWS RDS에 EC2 접속 허용하기
Post
Cancel

AWS RDS에 EC2 접속 허용하기

개요

  • 기본 설정으로 RDS와 ec2를 팠는데, ec2에서 RDS 접속이 안되는 현상이 발생해서
    이를 해결했다.

RDS와 ec2 팔 때 주의할 점

  • RDS와 ec2 리전을 동일하게 파야한다.
    다르게 파면 안 나온다.(이렇게 쓰려면 기본 세팅 외에 다른 조치를 해야하는 듯)

문제 발생 이유

  • RDS에서 사용하는 보안그룹 세팅 시 ec2에서 사용 중인 보안그룹 ID를
    인바운드 그룹에 추가해줘야 한다.
  • RDS에서 사용하는 보안그룹, 인바운드 그룹에 ec2 IP를 추가했지만
    이 방법은 정상 작동하지 않았다.

해결과정

  • ec2 정보 저장
    • 인스턴스 > 세부정보에서 “VPC ID” 기억
    • 인스턴스 > 보안에서 “보안그룹 ID” 기억
  • RDS 용 보안그룹 생성
    • 보안그룹 > 보안그룹 생성 클릭
    • 보안그룹 생성
    • 생성한 보안그룹 ID를 기억
    • 상세 설명
      • 보안그룹 이름, 설명
        • 원하는 이름 및 설명을 적어둔다.
      • VPC
        • 위에서 기억한 ec2 VPC ID를 선택
      • 인바운드 규칙
        • 쓰고 있는 DB 설정에 맞게 추가하면 된다.
        • 나의 경우 MariaDB이니 MariaDB 기준으로 설명한다.
        • 유형
          • MYSQL/Aurora
        • 프로토콜
          • TCP
        • 포트범위
          • 3306
          • 만약 DB에서 custom port를 쓰고 있다면 그 port를 넣는다.
            (수정이 안되면 유형을 “사용자 지정 TCP”로 바꾸고 수정)
        • 소스 유형
          • 사용자 지정
        • 소스
          • 위에서 기억한 ec2 보안그룹 ID를 입력
        • 설명
          • 구분하기 쉽게 간단한 메모를 써준다.
      • 아웃바운드 규칙
        • 퍼블릭 릴리즈라면 그냥 기본 설정대로
          유형: 모든 트래픽, 대상: 0.0.0.0/0으로 둔다.
  • RDS의 보안그룹 변경
    • 기본 설정으로 생성한 DB를 수정한다.
      • 서브넷 그룹
        • ec2에서 사용 중인 vpc와 같은 vpc여야 한다.
        • 기본 설정이라면 이미 ec2와 동일한 vpc 서브넷일 것이다.
        • 만약 그렇지 않다면 Amazon RDS > 서브넷 그룹에서
          ec2의 vpc와 동일한 서브넷 그룹을 생성한다.
        • 이 부분은 링크 에 더 상세하게 나와있으니 필요하다면 참고
      • 보안그룹
        • 위에서 RDS 용으로 생성한 보안그룹 ID를 적는다.
      • 나머지는 그대로 두고 수정
  • 확인
    • ec2 인스턴스로 접속
    • mysql-client 설치
      1
      2
      
      # ubuntu 기준
      $ sudo apt-get install mysql-client
      
    • 접속 명령
      1
      
      $ mysql -u [db-user] -p -h [db-host] -P 3306
      
    • 접속이 성공했거나, 실패 시 실패메세지가 바로 나온다면
      RDS 보안그룹이 성공적으로 변경된 것
    • 실패 메세지가 바로 안 나오고 time out 될 때까지 대기한다면
      보안그룹 변경이 실패한 것

AWS EC2에서 RDS 접속은 되는데 외부에서 RDS 접속이 되지 않는 경우

  • RDS 보안그룹 인바운드 룰에 외부에서 접속하는 ip와 포트를 추가한다.
  • 그래도 안된다면 RDS와 연결된 서브넷의 vpc 라우팅 테이블에
    인터넷 게이트웨이를 추가한다.
  • vpc 라우팅 테이블 추가

참고

This post is licensed under CC BY 4.0 by the author.