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

최종 업데이트 날짜: 2021년 1월 5일

AWS Lambda 함수를 Relational Database Service(RDS) 인스턴스에 연결하려고 합니다. 이를 위해 네트워크 설정을 어떻게 구성할 수 있습니까?

간략한 설명

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

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

  • 동일한 Virtual Private Cloud(VPC)에 있는 Lambda 함수 및 RDS 인스턴스
  • 서로 다른 VPC에 있는 Lambda 함수 및 RDS 인스턴스
  • Lambda 함수 및 퍼블릭 RDS 인스턴스

Lambda 함수의 네트워크 설정을 구성하는 방법에 대한 자세한 내용은 Lambda 콘솔을 사용한 VPC 액세스 구성을 참조하세요. Lambda 함수를 Aurora DB 클러스터에 연결하려면 Data API for Aurora Serverless를 사용합니다.

참고: 네트워크 설정이 올바르지 않으면 Lambda 함수 시간이 초과되고 작업 시간 초과 오류 메시지가 표시됩니다.

해결 방법

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

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

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

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

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

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

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

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

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

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

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

-또는-

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

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

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

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

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

유형 프로토콜 포트 범위 원본
사용자 지정 TCP TCP 3306 sg-1234
중요: 규칙이 데이터베이스 포트를 통한 TCP 연결을 허용하는지 확인해야 합니다.

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

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

NACL을 구성할 때 다음을 수행합니다.

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

참고: 다음 예에서는 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에 대한 아웃바운드 규칙의 예

유형 프로토콜 포트 범위 대상 허용/거부
사용자 지정 TCP TCP 3306 172.31.10.0/24 허용
사용자 지정 TCP TCP 3306 172.31.64.0/20 허용

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

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

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

유형 프로토콜 포트 범위 원본 허용/거부
사용자 지정 TCP TCP 1024-65535 172.31.10.0/24 허용
사용자 지정 TCP TCP 1024-65535 172.31.64.0/20 허용

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

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

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

중요: VPC 피어링 연결에 Domain Name Server(DNS) 확인이 활성화되어 있는지 확인합니다.

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

참고: 다음 예에는 CIDR로 레이블이 지정된 두 개의 서브넷 예제가 포함되어 있습니다.

피어링된 VPC의 경우, 172.31.0.0/16입니다. 피어링 연결의 경우, pcx-01234abcd입니다.

다른 VPC의 Lambda 함수 및 RDS 인스턴스에 대한 라우팅 테이블 예

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

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

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

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

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

유형 프로토콜 포트 범위 대상
사용자 지정 TCP TCP 3306 172.31.0.0/16
RDS 인스턴스 보안 그룹의 경우 트래픽이 Lambda 함수 보안 그룹의 CIDR에 들어오고 나가는 것이 허용되는지 확인합니다.

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

유형 프로토콜 포트 범위 원본
사용자 지정 TCP TCP 3306 10.0.0.0/16

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

Lambda 함수 및 퍼블릭 RDS 인스턴스

1.    VPC에서 DNS 라우팅이 활성화되어 있는지 확인합니다.

2.    다음 네트워크 구성 중 하나를 사용합니다.

퍼블릭 RDS 인스턴스와 동일한 VPC에 있는 Lambda 함수의 경우 위 동일한 VPC에 있는 Lambda 함수 및 RDS 인스턴스 섹션을 참조하세요.

참고: Lambda 함수는 인터넷 액세스가 필요하지 않습니다. 프라이빗 IP 주소를 사용하여 RDS를 확인합니다.

-또는-

서로 다른 VPC에 있는 Lambda 함수 및 퍼블릭 RDS 인스턴스에 대해서는 위 서로 다른 VPC에 있는 Lambda 함수 및 RDS 인스턴스 섹션을 참조하세요.

참고: VPC에 없는 Lambda 함수는 자동으로 인터넷에 액세스하여 퍼블릭 RDS 인스턴스의 IP 주소를 확인할 수 있습니다.

3.    퍼블릭 RDS 구성에 대해 다음 사항을 충족해야 합니다. RDS 인스턴스에 연결된 서브넷이 퍼블릭(IGW에 대한 기본 경로)입니다. 모든 NACL은 모든 인바운드 및 아웃바운드 액세스를 허용합니다. 보안 그룹은 모든 인바운드 연결을 허용합니다.

참고: NACL 액세스를 제한하려는 경우 NACL이 Lambda의 VPC CIDR 또는 EC2 CIDR 범위와의 연결을 계속 허용하는지 확인합니다. 아웃바운드 연결이 데이터베이스의 포트로 설정되어 있고 인바운드 연결이 휘발성 포트(1024-65535)로 설정되어 있는지 확인합니다. 보안 그룹의 인바운드 액세스를 제한해야 하는 경우 그룹이 Lambda의 VPC CIDR 또는 EC2 CIDR 범위에서 인바운드 액세스를 계속 허용하는지 확인합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?