VPC에서 Lambda 함수에 인터넷 액세스 권한을 부여하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 7월 22일

Amazon Virtual Private Cloud(Amazon VPC) 지원 AWS Lambda 함수에 인터넷 액세스를 제공하려고 합니다. 어떻게 해야 합니까?

간략한 설명

Lambda 함수가 프라이빗 VPC 리소스(예: Amazon Relational Database Service(Amazon RDS) DB 인스턴스 또는 Amazon Elastic Compute Cloud(Amazon EC2 인스턴스))에 액세스하려고 합니다. 이를 구성하려면 VPC에서 하나 이상의 프라이빗 서브넷에 함수를 연결해야 합니다. 함수에 인터넷 액세스 권한을 부여하려면 연결된 VPC의 퍼블릭 서브넷에 NAT 게이트웨이 또는 NAT 인스턴스가 있어야 합니다.

서브넷이 프라이빗인지 아니면 퍼블릭인지 여부는 해당 라우팅 테이블에 따라 달라집니다. 퍼블릭 서브넷에는 인터넷 게이트웨이를 가리키는 경로가 있지만, 프라이빗 서브넷에는 해당 경로가 없습니다.

해결 방법

기존 VPC를 사용하는 경우 VPC 구성 요소 생성부터 시작하여 NAT 게이트웨이를 포함하는 하나의 퍼블릭 서브넷과 하나 이상의 프라이빗 서브넷을 생성합니다. 기존 VPC에 이미 NAT 게이트웨이를 포함하는 하나의 퍼블릭 서브넷과 하나 이상의 프라이빗 서브넷이 있으면 Amazon VPC에 대한 Lambda 실행 역할 생성 단계로 건너뜁니다.

이 설정을 위해 새 VPC를 생성하려면 VPC 마법사를 사용하고 퍼블릭 및 프라이빗 서브넷을 포함하는 VPC를 선택합니다. (Amazon VPC 콘솔에서 서브넷 이름은 상황에 따라 "Public subnet" 및 "Private subnet"입니다.) 그런 다음, Amazon VPC에 대한 Lambda 실행 역할 생성 단계로 건너뜁니다.

VPC 구성 요소 생성

  1. VPC에서 둘 이상의 새 서브넷을 생성합니다. 생성 중 [이름 태그]에 서브넷이 퍼블릭인지, 프라이빗인지를 식별하는 데 도움이 되는 이름을 추가합니다. 예를 들어, 하나는 Public Subnet으로, 다른 서브넷은 Private Lambda(또는 프라이빗 서브넷이 여러 개인 경우 Private Lambda 1, Private Lambda 2 등)로 이름을 지정합니다.
    참고: 중복 제거를 위해 서로 다른 가용 영역에서 여러 개의 프라이빗 서브넷을 생성하는 것이 모범 사례이며, 이 경우 Lambda는 함수에 대한 고가용성을 보장할 수 있습니다.
  2. 인터넷 게이트웨이를 생성하여 VPC에 연결합니다.
  3. NAT 게이트웨이를 생성합니다. 생성 중 [서브넷]에서 퍼블릭으로 설정할 서브넷을 선택합니다. (예를 들어, 이전에 이름을 지정한 경우 Public Subnet입니다.)

서브넷에 대한 라우팅 테이블 생성 및 수정

  1. Amazon VPC 콘솔에서 VCP에 대한 두 개의 사용자 지정 라우팅 테이블을 생성합니다.
    팁: 생성 중 [이름 태그]에 라우팅 테이블이 연결된 서브넷을 식별하는 데 도움이 되는 이름을 추가합니다. 예를 들어, 하나는 Public Subnet으로, 다른 서브넷은 Private Lambda로 이름을 지정합니다.
  2. 퍼블릭 서브넷 라우팅 테이블(Public Subnet)을 퍼블릭으로 설정하려는 서브넷에 연결합니다.
  3. 이 라우팅 테이블에 새 경로를 추가합니다. 다음을 지정합니다.
    [대상]에 [0.0.0.0/0]을 입력합니다.
    [대상]에서 [인터넷 게이트웨이]를 선택하고 생성한 인터넷 게이트웨이의 ID(igw-…)를 선택합니다.
    [Save routes]를 선택합니다. 이제 연결된 서브넷은 퍼블릭 서브넷이 됩니다.
  4. 다른 라우팅 테이블(Private Lambda)을 프라이빗 서브넷에 연결합니다.
  5. 이 라우팅 테이블에 새 경로를 추가합니다. 다음을 지정합니다.
    [대상]에 [0.0.0.0/0]을 입력합니다.
    [대상]에서 [NAT 게이트웨이]를 선택하고 생성한 NAT 게이트웨이의 ID(nat-…)를 선택합니다. (NAT 인스턴스를 사용하는 경우 [네트워크 인터페이스]를 선택합니다.)
    [Save routes]를 선택합니다.

Amazon VPC에 대한 Lambda 실행 역할 생성

  1. AWS Identity and Access Management(IAM) 콘솔의 왼쪽 탐색 창에서 [역할]을 선택합니다.
  2. [역할] 창에서 [역할 만들기]를 선택합니다.
  3. [역할 만들기] 페이지에서 다음을 수행합니다.
    [신뢰할 수 있는 유형의 개체 선택] 섹션에서 [AWS 서비스]를 선택합니다.
    [이 역할을 사용할 서비스 선택] 섹션에서 [Lambda]를 선택합니다.
    [다음: 권한]을 선택합니다.
  4. [권한 정책 연결]에서 AWSLambdaVPCAccessExecutionRole을 검색합니다. 해당 이름의 정책을 선택하고 [다음: 태그]를 선택합니다.
  5. 선택적으로 원하는 경우 태그를 추가하고 [다음: 검토]를 선택합니다.
  6. [검토]에서 다음을 수행합니다.
    [역할 이름]에서 이 Lambda 실행 역할의 이름을 입력합니다. 예를 들어, lambda_vpc_basic_execution과 같습니다.
    (선택 사항) [역할 설명]에서 기본 설정에 대한 설명을 편집합니다.
    [역할 만들기]를 선택합니다.

자세한 내용은 AWS Lambda 실행 역할을 참조하십시오.

Lambda 함수 구성

  1. Lambda 콘솔의 왼쪽 탐색 창에서 [함수]를 선택합니다.
  2. VPC에 연결할 함수 이름을 선택합니다.
  3. [구성] 창의 [실행 역할] 아래 [기존 역할]에서 생성한 IAM 실행 역할(lambda_vpc_basic_execution)을 선택합니다.
  4. [구성] 창의 [네트워크]에서 다음을 수행합니다.
    [Virtual Private Cloud(VPC)]에서 VPC를 선택합니다.
    [서브넷]에서 생성한 프라이빗 서브넷을 선택합니다. 서브넷 ID 및 이름을 지정한 경우 서브넷 ID 및 이름으로 서브넷을 식별합니다.
    [보안 그룹]에서 보안 그룹을 선택합니다.
    참고: 기본 보안 그룹을 사용해도 모든 아웃바운드 인터넷 트래픽을 허용하며, 대부분의 경우에 충분합니다. 자세한 내용은 VPC의 보안 그룹을 참조하십시오.
  5. [저장]을 선택합니다.