공유 데이터베이스 연결 설정

Amazon RDS Proxy 사용

Amazon RDS ProxyAmazon Relational Database Service(RDS)의 완전관리형 및 고가용성 데이터베이스 프록시로, 애플리케이션의 확장성, 데이터베이스 장애에 대한 복원력, 보안을 강화합니다.

AWS Lambda를 사용하는 현대적 서버리스 아키텍처를 기반으로 구축된 애플리케이션을 비롯하여 많은 애플리케이션이 데이터베이스 서버에 다수의 개방형 연결을 설정할 수 있으며 빠른 속도로 데이터베이스 연결을 열고 닫을 수 있으므로 데이터베이스 메모리와 컴퓨팅 리소스를 소진하게 됩니다. Amazon RDS Proxy를 사용하면 애플리케이션이 데이터베이스와 설정된 연결을 풀링 및 공유할 수 있어 데이터베이스 효율성과 애플리케이션 확장성이 향상됩니다. RDS Proxy를 사용하면 Aurora 및 RDS 데이터베이스의 장애 조치 시간을 최대 66% 단축하고, AWS Secrets ManagerAWS Identity and Access Management(IAM)와의 통합을 통해 데이터베이스 자격 증명, 인증 및 액세스를 관리할 수 있습니다.

Amazon RDS Proxy는 대부분의 애플리케이션에서 코드 변경 없이 사용할 수 있으며, 추가 인프라를 프로비저닝하거나 관리할 필요가 없습니다. 요금제는 간단하고 예측 가능하며, 프록시가 활성화된 데이터베이스 인스턴스의 VPC당 비용을 지불하면 됩니다. Amazon RDS Proxy는 Amazon RDS for MySQL 및 Amazon Aurora with MySQL compatibility를 지원합니다.

이 자습서에서는 Amazon RDS Proxy를 생성하고 기존 Amazon RDS MySQL 데이터베이스에 연결하는 방법에 대해 알아봅니다. Amazon EC2 인스턴스의 MySQL 클라이언트를 사용하여 RDS Proxy를 통해 RDS MySQL 데이터베이스에 연결할 수 있습니다. 이러한 개념은 Amazon RDS를 사용하는 서버리스 아키텍처에도 적용될 수 있습니다.

사전 조건

Amazon RDS Proxy를 사용하려면 다음과 같은 일련의 네트워킹 리소스를 갖추어야 합니다.

  • Amazon Virtual Private Cloud(VPC)
  • 서로 다른 가용 영역에 걸쳐 2개 이상의 서브넷
  • 동일한 VPC 내에 Amazon RDS 데이터베이스와 Amazon EC2 인스턴스
  • 인터넷 게이트웨이

기존 RDS MySQL 데이터베이스 인스턴스에 성공적으로 연결했다면 필요한 네트워크 리소스가 이미 설정되어 있습니다. 이 자습서를 사용하려면 동일한 VPC 내에 EC2 인스턴스와 RDS MySQL 인스턴스가 설정된 계정이 있어야 합니다. 이러한 인스턴스가 설정되어 있지 않은 경우, RDSEC2 지침을 따라 기본 VPC에 인스턴스를 프로비저닝할 수 있습니다.

자습서 소개
시간 10분      
요금 1 USD 미만
사용 사례 데이터베이스
제품 Amazon RDS, AWS Secrets Manager
대상 데이터베이스 관리자, 개발자
레벨 중급자용
최종 업데이트 날짜 2020년 3월 16일

1단계: 보안 그룹 및 데이터베이스 연결 확인

이 단계에서는 보안 그룹의 인바운드 및 아웃바운드 규칙을 확인한 다음 현재 EC2 인스턴스에서 기존 RDS 데이터베이스 인스턴스로의 연결을 확인합니다.  

1.1 – Amazon VPC 대시보드를 열고 AWS 계정 자격 증명을 사용해 로그인합니다. AWS 계정이 없는 경우 시작하려면 새로운 AWS 계정을 생성하십시오.

계정이 있습니까? 계정에 로그인

1.2 – 리전 드롭다운을 선택하고 기존 RDS 및 EC2 인스턴스가 있는 AWS 리전을 선택합니다. 이 자습서에서는 미국 동부(오하이오) 리전을 사용합니다.

1.3 – 왼쪽 탐색 창에서 보안 그룹을 선택합니다.

이 자습서에서는 다음 두 개의 VPC 보안 그룹을 사용합니다.

  • EC2-sg: 이 보안 그룹은 EC2 인스턴스에 연결되어 EC2 인스턴스에 대해 인바운드는 SSH 연결만 허용하고 아웃바운드는 모든 연결을 허용합니다.
  • RDS-sg: 이 보안 그룹은 RDS 인스턴스에 연결되어 EC2 인스턴스(EC2-sg로 표시)의 포트 3306에서 TCP 연결만 허용하고 아웃바운드는 모든 연결을 허용합니다.

1.4 – EC2-sg를 선택합니다.

  • 인바운드 규칙 탭을 선택하고 유형이 SSH인지 확인합니다.
  • 아웃바운드 규칙 탭을 선택하고 유형모든 트래픽인지 확인합니다.

1.5 – RDS-sg를 선택합니다.

  • 인바운드 규칙 탭을 선택하고 소스EC2-sg인지 확인합니다.
  • 아웃바운드 규칙 탭을 선택하고 유형모든 트래픽인지 확인합니다.

1.6 – RDS 콘솔로 이동하여 데이터베이스를 선택한 다음 기존 RDS MySQL DB 인스턴스를 선택합니다. 연결 및 보안 탭에서 인스턴스 엔드포인트를 메모해 둡니다.

1.7 – EC2 콘솔로 이동하여 실행 인스턴스를 선택한 다음 RDS DB 인스턴스에 대한 연결을 테스트할 EC2 인스턴스를 선택합니다. 연결을 선택합니다.

1.8 – [인스턴스에 연결] 대화 상자에서 EC2 인스턴스 연결(브라우저 기반 SSH 연결)을 선택합니다. EC2 인스턴스 명령줄 인터페이스(CLI)를 표시하는 브라우저 창이 열립니다.

1.9 – EC2 인스턴스 CLI에서 다음 명령을 사용하여 RDS DB 인스턴스에 대한 연결을 테스트합니다.

mysql -h <RDS DB endpoint> -P 3306 -u <username> -p

메시지가 나타나면 암호를 입력하고 Enter를 누릅니다.

CLI는 RDS DB 인스턴스에 성공적으로 연결되었음을 나타내는 메시지를 반환합니다. EC2 인스턴스에서 RDS 인스턴스로 연결할 수 없는 경우 두 인스턴스가 모두 동일한 VPC에 있고 보안 그룹이 올바르게 설정되어 있는지 확인합니다.

2단계: AWS Secrets Manager에 데이터베이스 자격 증명 저장

이 단계에서는 AWS Secrets Manager에 데이터베이스 자격 증명을 저장합니다. 프록시가 액세스하는 각 데이터베이스 사용자 계정에는 해당하는 보안 정보가 AWS Secrets Manager에 있어야 합니다. Amazon RDS Proxy는 이러한 보안 정보를 사용하여 데이터베이스에 대한 연결 풀을 유지 관리합니다.

2.1 – AWS Management Console의 Secrets Manager 섹션으로 이동하여 새 보안 정보 저장을 선택합니다.

2.2 – 보안 정보 유형 선택 상자에서 RDS 데이터베이스 자격 증명을 선택합니다. 그런 다음 데이터베이스를 생성할 때 사용한 사용자 이름과 암호를 입력합니다.

2.3 – DefaultEncryptionKey를 선택한 다음 보안 정보로 액세스할 해당 RDS 데이터베이스를 선택합니다. 다음을 선택합니다.  

2.4 – 보안 정보 이름 및 설명 섹션에서 나중에 쉽게 찾을 수 있도록 보안 정보의 이름 및 설명을 입력합니다. 그리고 다음을 선택합니다.

2.5 – AWS Secrets Manager에서는 보안 정보에 대한 자동 보안 정보 교체를 구성할 수 있습니다. 애플리케이션의 보안을 향상할 수 있는 쉬우면서도 영리한 방법입니다. 자세한 내용은 AWS Secrets Manager 보안 정보 교체를 참조하십시오.

보안 정보 교체 설정은 이 자습서에서 다루지 않으므로 자동 교체 비활성화 옵션을 선택하고 다음을 선택합니다.

2.6 – Secrets Manager 콘솔에는 보안 정보에 대한 구성 설정이 표시되며 보안 정보 사용 방법을 보여주는 몇 가지 샘플 코드가 표시됩니다. 페이지 맨 아래로 스크롤하고 저장을 선택하여 보안 정보를 저장합니다.

2.7 – 보안 정보를 생성하면 Secrets Manager 페이지에는 생성된 보안 정보가 표시됩니다. 사용자의 tutorial-secret을 선택합니다.

보안 정보 세부 사항 상자에는 보안 정보의 ARN이 표시됩니다. 이 자습서에서 나중에 필요하므로 이 값을 복사합니다.

3단계: IAM 역할 및 정책 생성

이 단계에서는 사용자가 AWS Secrets Manager에 생성한 보안 정보에 RDS Proxy가 액세스할 수 있도록 허용하는 AWS Identity and Access Management(IAM) 역할을 및 정책을 생성합니다.

3.1 – AWS Management Console의 IAM 대시보드로 이동합니다. IAM 대시보드 탐색 창에서 역할을 선택한 다음 역할 생성을 선택합니다.

3.2 – 신뢰할 수 있는 엔터티 유형 선택에서 AWS 서비스를 선택합니다. 사용 사례 선택에서 RDS를 선택합니다.

3.3. 사용 사례 선택에서 RDS - 데이터베이스에 역할 추가를 선택한 후 다음: 권한을 선택합니다.

3.4 – 정책 생성을 선택하고 JSON 탭을 선택합니다. 기존 정책 문을 삭제합니다.

3.5 – 아래 나열된 예제의 보안 정보 ARM 값을 대체하여 다음 새로운 정책 문을 추가합니다. 그런 다음 정책 검토를 선택합니다.

(이 정책 문은 Amazon RDS 사용 설명서AWS Identity and Access Management(IAM) 정책 설정 섹션에 설명되어 있습니다.)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword",
                "secretsmanager:CreateSecret",
                "secretsmanager:ListSecrets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Resource": [
                     "your_secret_ARN"
            ]
        }
    ]
}

3.6 – 정책 검토 섹션에서 나중에 쉽게 찾을 수 있도록 정책의 이름 및 설명을 입력합니다. 그런 다음 정책 생성을 선택합니다.

3.7 – 역할을 선택한 다음 새로 고침을 선택합니다.

3.8 – 검색 상자에 tutorial을 입력하고 tutorial-policy을 선택합니다. 다음: 태그를 선택합니다.

3.9 – 태그 지정 섹션을 건너뛰고 다음: 검토를 선택합니다.

3.10 – 검토 섹션에서 나중에 쉽게 찾을 수 있도록 역할의 이름 및 설명을 입력합니다. 그런 다음 역할 생성을 선택합니다.

3.11 – 역할이 생성되었는지 확인합니다.

4단계: RDS Proxy 생성

이 단계에서는 RDS Proxy를 생성하고 1단계에서 확인한 보안 그룹, 2단계에서 생성한 비밀 및 3단계에서 생성한 역할에 대한 프록시를 구성합니다.

4.1 – RDS 콘솔로 이동합니다. RDS 탐색 창에서 프록시를 선택한 다음 프록시 생성을 선택합니다.

4.2 – 프록시 구성 섹션에서 다음을 수행합니다.

  • 프록시 식별자에 쉽게 식별 가능한 프록시 이름을 입력합니다.
  • 전송 계층 보안 필요 확인란을 선택 취소합니다.
  • 유휴 클라이언트 연결 시간 제한을 기본값인 30분으로 둡니다.

4.3 – 대상 그룹 구성 섹션에서 데이터베이스에 대해 이 RDS Proxy와 연결할 RDS MySQL DB 인스턴스를 선택합니다. (이 RDS DB 인스턴스는 1단계에서 연결을 확인한 인스턴스와 동일합니다.) 연결 풀 최대 연결의 경우 기본값인 100을 유지합니다.

4.4 – 연결 섹션에서 다음을 수행합니다.

  • Secrets Manager 보안 정보의 경우 2단계에서 생성한 보안 정보를 선택합니다.
  • IAM 역할의 경우 3단계에서 생성한 역할을 선택합니다.
  • IAM 인증의 경우 기본 설정인 사용 안 함을 유지합니다. (이 자습서에서는 DB 자격 증명을 사용하여 RDS Proxy에 연결하므로 IAM 인증이 사용되지 않습니다.)
  • 서브넷의 경우 서로 다른 가용 영역에서 최소 2개의 서브넷을 선택합니다.
  • 추가 연결 구성을 확장하고 VPC 보안 그룹에 대해 기존 RDS-sg 보안 그룹을 선택합니다.

4.5 – 고급 구성 섹션에서 고급 로깅의 기본 설정을 유지합니다. 서비스 계약 확인란을 선택하고 프록시 생성을 선택합니다.

4.6 – 프록시 상태가 [생성]에서 [사용 가능]으로 변경되길 기다린 다음 해당 프록시를 선택합니다.

4.7 – 프록시 구성 섹션에서 프록시 엔드포인트를 메모하고 다른 모든 파라미터가 올바른지 확인합니다.

5단계: RDS Proxy를 통해 RDS DB에 연결

인 단계에서는 EC2 인스턴스에서 RDS DB 인스턴스에 연결합니다. 그러나 직접 연결하는 대신 EC2 인스턴스는 RDS Proxy를 통해 RDS DB 인스턴스에 연결됩니다.

5.1 – EC2 콘솔로 이동합니다. EC2 탐색 창에서 실행 인스턴스를 선택한 다음 1단계에서 연결을 테스트한 EC2 인스턴스를 선택합니다. 연결을 선택합니다.

5.2 – 인스턴스에 연결 대화 상자에서 EC2 인스턴스 연결(브라우저 기반 SSH 연결) 선택한 다음 연결을 선택합니다.

5.3 – EC2 인스턴스 CLI에서 다음 명령을 사용하여 RDS Proxy 엔드포인트를 통해 RDS 인스턴스에 연결합니다.

mysql -h <proxy endpoint> -P 3306 -u <username> -p

메시지가 나타나면 암호를 입력하고 Enter를 누릅니다.

CLI는 RDS Proxy 엔드포인트를 통해 RDS DB 인스턴스에 성공적으로 연결되었음을 나타내는 메시지를 반환합니다.

6단계: RDS Proxy 연결 모니터링

이 단계에서는 Amazon CloudWatch를 사용하여 클라이언트 및 데이터베이스 연결과 같은 프록시 지표를 모니터링합니다.

6.1 – CloudWatch 콘솔로 이동합니다. CloudWatch 탐색 창에서 지표를 선택한 다음 RDS, 프록시별 지표를 선택합니다.  

6.2 – 검색 상자에 프록시 이름을 입력합니다.

6.3 – 지표 목록에서 ClientConnectionsDatabaseConnections를 선택합니다. 표시 옵션에서 숫자를 선택합니다.

ClientConnections 지표는 현재 RDS Proxy에 연결된 클라이언트 수를 표시하며 이 수치는 1분 간격으로 보고됩니다. DatabaseConnections 지표는 현재 RDS Proxy에서 연결된 데이터베이스 수를 표시하며 이 수치는 1분 간격으로 보고됩니다. 모든 지표에 대한 자세한 내용은 RDS Proxy 모니터링을 참조하십시오.

결과 그래프는 클라이언트 연결 1개(EC2에서 RDS Proxy로)와 데이터베이스 연결 1개(RDS Proxy에서 RDS DB 인스턴스로)가 있음을 보여줍니다. 이 데이터는 5단계에서 수행한 연결을 확인해 줍니다.

7단계: 정리

다음 단계에서는 이 자습서에서 생성한 리소스를 정리합니다.

RDS Proxy 삭제

7.1 – RDS 콘솔로 이동하고 왼쪽 창에서 프록시를 선택합니다.

7.2 – 자습서 프록시를 선택합니다.

7.3 – 작업을 선택한 다음 삭제를 선택합니다.

7.4 – 대화 상자에 delete me를 입력하고 삭제를 선택합니다.

프록시 상태가 삭제 중으로 변경됩니다. 삭제가 완료되면 프록시가 목록에서 제거됩니다.

보안 정보 삭제

7.5 – Secrets Manager 콘솔로 이동합니다.

7.6 – 자습서 보안 정보를 선택합니다.

7.7 – 작업을 선택한 다음 보안 정보 삭제를 선택합니다.

7.8 – 안전을 위해 Secrets Manager에서는 보안 정보를 영구적으로 삭제하기 전에 대기 기간을 적용합니다. 기본 기간인 30일을 사용하고 삭제 예약을 선택합니다.

IAM 역할 및 정책 삭제

7.9 – IAM 콘솔로 이동하여 탐색 창에서 역할을 선택합니다.

7.10 – tutorial-role을 검색한 다음 해당 역할 옆에 있는 확인란을 선택합니다.

7.11 – 페이지 상단에서 역할 삭제를 선택합니다.

7.12 – 확인 대화 상자에서 예, 삭제합니다를 선택합니다.  

7.12 – IAM 탐색 창에서 정책을 선택합니다.

7.13 – tutorial-policy를 검색한 다음 해당 정책 옆에 있는 확인란을 선택합니다.  

7.14 – 정책 작업을 선택한 다음 삭제를 선택합니다.

7.15 – 정책을 삭제할 것인지 확인한 다음 삭제를 선택합니다.

기타 리소스 삭제

이 자습서를 위해 새로운 EC2 인스턴스, 새로운 RDS 인스턴스, 이에 해당하는 보안 그룹을 생성한 경우 해당 리소스도 삭제합니다.

축하합니다!

데이터베이스 연결을 풀링 및 공유하도록 Amazon RDS Proxy를 생성하고, 프록시 지표를 모니터링하고, 프록시 연결 작업을 확인했습니다.

이 자습서가 유용했습니까?

Amazon RDS 기능에 대해 자세히 알아보기

Amazon RDS 사용 설명서를 참조하여 Amazon RDS의 기능에 대해 자세히 알아보십시오.

Amazon RDS 모범 사례

Amazon RDS를 사용하는 일반 모범 사례와 옵션에 대해 알아보십시오.

Amazon RDS Proxy에 대해 자세히 알아보기

자세한 내용은 Using Amazon RDS Proxy with AWS Lambda 블로그 게시물과 Amazon RDS Proxy를 사용한 연결 관리를 참조하십시오.