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

6분 분량
0

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

간략한 설명

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

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

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

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

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

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

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

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

해결 방법

중요: 다음 예제에 제공된 각 포트 범위, 소스대상 설정을 자신의 네트워크 구성에 맞게 변경해야 합니다. **TCP(Transmission Control Protocol)**는 각 네트워크 구성 유형에 필요한 프로토콜입니다.

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

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

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

1.    보안 그룹에서 다음 네트워크 설정 중 하나를 사용하세요.

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

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

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

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

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

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

-또는-

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

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

연결하려는 RDS 인스턴스가 아닌 다른 보안 그룹에 있는 Lambda 함수에 대한 아웃바운드 규칙 예

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

연결하려는 Lambda 함수가 아닌 다른 보안 그룹에 있는 RDS 인스턴스에 대한 인바운드 규칙 예

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

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

2.    **네트워크 액세스 제어 목록(NACL)**의 경우 인바운드 및 아웃바운드 규칙이 Lamda 함수와 RDS 인스턴스 간의 통신을 허용하는지 확인합니다.

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

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

참고: 다음 예제에서는 CIDR이 레이블을 지정한 네 개의 예시 서브넷을 사용합니다.
Lamda 함수의 서브넷의 경우, 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허용

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

각 서브넷의 NACL에 다른 인스턴스의 서브넷의 CIDR 범위에 있는 임시 포트에 대한 인바운드 규칙이 있는지 확인합니다.

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

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

중요: RDS 인스턴스 서브넷의 NACl에도 동일한 인바운드 규칙을 적용하되 소스는 Lambda 서브넷의 CIDR로 설정합니다.

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

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

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

1.    라우팅 테이블의 경우 VPC 피어링 연결이 성공적인지 확인합니다.
대상에서 피어링된 VPC의 CIDR을 찾습니다.
대상에서 피어링 연결을 찾습니다.

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

소스 VPC의 CIDR(Lamda 함수): 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.    보안 그룹에서 다음 네트워크 설정을 사용합니다.

Lambda 함수의 보안 그룹의 경우 트래픽이 RDS 인스턴스 VPC의 CIDR을 드나들 수 있도록 허용해야 합니다.

참고: 다음 예에는 CIDR로 레이블이 지정된 두 개의 예제 서브넷이 포함되어 있습니다.
RDS 인스턴스의 경우, 172.31.0.0/16
Lamda 함수의 경우, 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 섹션의 Lamda 함수 및 RDS 인스턴스 3단계의 이전 절차를 따릅니다. Lambda 함수의 서브넷 CIDR의 오리진이 다른 VPC에 있습니다.

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


AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음