RDS 인스턴스에 연결하도록 Lambda 함수를 구성하려면 어떻게 해야 하나요?

6분 분량
0

AWS Lambda 함수를 Amazon Relational Database Service(RDS) 인스턴스에 연결하려고 합니다.

간략한 설명

참고: 다음 정보 및 단계는 Amazon RDS 인스턴스를 참조합니다. 그러나 해결 방법은 Virtual Private Cloud(VPC)에 위치한 모든 엔드포인트 또는 데이터베이스에도 적용됩니다.

Lambda 함수를 RDS 인스턴스에 연결하려면 연결을 허용하도록 네트워킹 구성을 설정해야 합니다.

다음 연결 유형마다 서로 다른 구성 설정이 있습니다.

  • 동일한 VPC에 있는 Lambda 함수 및 RDS 인스턴스
  • 서로 다른 VPC에 있는 Lambda 함수 및 RDS 인스턴스

보안상의 이유로 RDS 인스턴스를 VPC에 유지하는 것이 좋습니다. 퍼블릭 데이터베이스의 경우Amazon DynamoDB와 같은 NoSQL 데이터베이스 서비스를 사용합니다.

VPC 외부의 Lambda 함수는 VPC 내부의 RDS 인스턴스에 액세스할 수 없습니다.

Lambda 함수의 네트워크 설정을 구성하는 방법에 대한 자세한 내용은 VPC의 리소스에 액세스하도록 Lambda 함수 구성을 참조하세요. 네트워크 설정이 올바르지 않으면 Lambda 함수 시간이 초과되고 작업 시간 초과 오류 메시지가 표시됩니다.

Lambda 함수를 Amazon Aurora DB 클러스터에 연결하려면 Data API for Aurora Serverless를 사용합니다.

해결 방법

중요: 다음 예제에 제공된 각 포트 범위, 원본대상 설정을 고유한 네트워크 구성과 일치하도록 변경해야 합니다. **Transmission Control Protocol(TCP)**은 각 유형의 네트워크 구성에 필요한 프로토콜입니다.

동일한 VPC에 있는 Lambda 함수 및 RDS 인스턴스

Lambda 함수를 동일한 VPC의 RDS 인스턴스에 연결할 때는 다음 네트워킹 구성을 사용합니다.

참고: 기본적으로 VPC 내 모든 서브넷에는 로컬 경로가 포함되어 있습니다. 대상은 VPC의 Classless Inter-Domain Routing(CIDR)이고 타겟은 로컬입니다. 자세한 내용은 라우팅 테이블 개념을 참조하세요.

1.    Security Groups(보안 그룹)의 경우 다음 네트워크 설정 중 하나를 사용합니다.

동일한 보안 그룹에 연결된 인스턴스의 경우 보안 그룹을 인바운드 규칙의 원본으로 설정합니다. 보안 그룹을 아웃바운드 규칙의 대상으로 지정합니다.

예를 들어 Lambda 함수와 RDS 인스턴스가 모두 보안 그룹 sg-abcd1234에 있는 경우 각 인스턴스에는 다음과 같은 인바운드 및 아웃바운드 규칙이 있습니다.

동일한 보안 그룹에 연결된 인스턴스에 대한 인바운드 규칙의 예

유형프로토콜포트 범위원본
사용자 지정 TCPTCP3306sg-abcd1234

동일한 보안 그룹에 연결된 인스턴스에 대한 아웃바운드 규칙의 예

유형프로토콜포트 범위대상
사용자 지정 TCPTCP3306sg-abcd1234

-또는-

서로 다른 보안 그룹에 있는 인스턴스의 경우 두 보안 그룹 모두 서로에 대한 액세스를 허용해야 합니다.

예를 들어 Lambda 함수가 보안 그룹 sg-1234에 있고 RDS 인스턴스가 sg-abd에 있는 경우 각 그룹에는 다음 규칙이 적용됩니다.

연결할 RDS 인스턴스와 다른 보안 그룹의 Lambda 함수에 대한 아웃바운드 규칙 예

유형프로토콜포트 범위대상
사용자 지정 TCPTCP3306sg-abcd

연결할 Lambda 함수와 다른 보안 그룹의 RDS 인스턴스에 대한 인바운드 규칙 예

유형프로토콜포트 범위원본
사용자 지정 TCPTCP3306sg-1234

중요: 규칙이 데이터베이스 포트를 통한 TCP 연결을 허용하는지 확인해야 합니다.

2.    **Network Access Control List(NACL)**의 경우 인바운드 및 아웃바운드 규칙이 Lambda 함수와 RDS 인스턴스 간의 통신을 허용하는지 확인합니다.

참고: 기본적으로 NACL은 모든 인바운드 및 아웃바운드 트래픽을 허용합니다. 그러나 이러한 기본 설정은 변경할 수 있습니다.

RDS 인스턴스 및 Lambda 함수와 연결된 각 서브넷에 대해 다른 인스턴스 서브넷의 CIDR에 대한 아웃바운드 TCP 연결을 허용하도록 NACL을 구성합니다.

참고: 다음 예에서는 CIDR로 레이블이 지정된 네 개의 서브넷 예를 사용합니다.
Lambda 함수 서브넷의 경우, 172.31.1.0/24와 172.31.0.0/28입니다.
RDS 인스턴스 서브넷의 경우, 172.31.10.0/24와 172.31.64.0/20입니다.

Lambda 함수 서브넷의 NACL에 대한 아웃바운드 규칙의 예

유형프로토콜포트 범위대상허용/거부
사용자 지정 TCPTCP3306172.31.10.0/24허용
사용자 지정 TCPTCP3306172.31.64.0/20허용

중요: RDS 인스턴스 서브넷의 NACL에도 동일한 아웃바운드 규칙을 적용하지만 대상이 Lambda 서브넷의 CIDR로 설정되어 있어야 합니다.

각 서브넷의 NACL에 다른 인스턴스 서브넷의 CIDR 범위에 있는 휘발성 포트에 대한 인바운드 규칙이 있어야 합니다.

Lambda 함수 서브넷의 NACL에 대한 인바운드 규칙의 예

유형프로토콜포트 범위원본허용/거부
사용자 지정 TCPTCP1024-65535172.31.10.0/24허용
사용자 지정 TCPTCP1024-65535172.31.64.0/20허용

중요: RDS 인스턴스 서브넷의 NACL에도 동일한 인바운드 규칙을 적용하지만 원본이 Lambda 서브넷의 CIDR로 설정되어 있어야 합니다.

서로 다른 VPC에 있는 Lambda 함수 및 RDS 인스턴스

먼저 VPC 피어링을 사용하여 두 VPC를 연결합니다. 그 후, 다음 네트워킹 구성을 사용하여 한 VPC의 Lambda 함수를 다른 VPC의 RDS 인스턴스에 연결합니다.

중요: VPC 피어링 연결을 위해 도메인 이름 시스템(DNS)을 켜야 합니다.

1.    Route Table(라우팅 테이블)에서 VPC 피어링 연결이 성공했는지 확인합니다.
Destination(대상)에서 피어링된 VPC의 CIDR을 찾습니다.
Target(타겟)에서 피어링 연결을 찾습니다.

참고: 다음 예에는 두 개의 예시 VPC가 포함되어 있습니다.

원본 VPC의 CIDR(Lambda 함수): 10.0.0.0/16

피어링된 VPC의 CIDR(RDS 인스턴스): 172.31.0.0/16

피어링 연결: pcx-01234abcd

Lambda 함수와 연결된 원본 VPC의 라우팅 테이블 예

대상타겟
172.31.0.0/16pcx-01234abcd
10.0.0.0/16로컬

RDS 인스턴스가 있는 피어링된 VPC의 라우팅 테이블 예

대상타겟
10.0.0.0/16pcx-01234abcd
172.31.0.0/16로컬

자세한 내용은 VPC 피어링 연결을 위한 라우팅 테이블 업데이트를 참조하세요.

2.    [보안 그룹(Security Groups)]에 다음 네트워크 설정을 사용합니다.

Lambda 함수 보안 그룹의 경우 트래픽이 RDS 인스턴스 VPC의 CIDR에 들어오고 나가는 것이 허용되는지 확인합니다.

참고: 다음 예에는 CIDR로 레이블이 지정된 두 개의 서브넷 예제가 포함되어 있습니다.
RDS 인스턴스의 경우, 172.31.0.0/16입니다.
Lambda 함수의 경우, 10.0.0.0/16입니다.

RDS 인스턴스가 아닌 다른 VPC에 있는 Lambda 함수의 아웃바운드 규칙 예

유형프로토콜포트 범위대상
사용자 지정 TCPTCP3306172.31.0.0/16

RDS 인스턴스 보안 그룹의 경우 트래픽이 Lambda 함수 보안 그룹의 CIDR에 들어오고 나가는 것을 허용합니다.

Lambda 함수가 아닌 다른 VPC에 있는 RDS 인스턴스에 대한 인바운드 규칙의 예

유형프로토콜포트 범위원본
사용자 지정 TCPTCP330610.0.0.0/16

3.    NACL의 경우 동일한 VPC 섹션에 있는 Lambda 함수 및 RDS 인스턴스 섹션의 3단계 절차를 따릅니다. Lambda 함수 서브넷 CIDR의 출처가 다른 VPC에 있습니다.

참고: VPC 피어링의 대안으로 AWS PrivateLink를 사용하여 VPC 전반에서 Amazon RDS에 액세스할 수 있습니다. 이 솔루션은 동일한 AWS 리전의 AWS 계정과 VPC 간에 작동합니다.


AWS 공식
AWS 공식업데이트됨 일 년 전