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

최종 업데이트 날짜: 2021년 10월 6일

Amazon Virtual Private Cloud(Amazon VPC)에 연결된 AWS Lambda 함수에 인터넷 액세스를 제공하려 합니다. 어떻게 설정해야 하나요?

간략한 설명

프라이빗 서브넷에서 인터넷에 액세스하려면 NAT (네트워크 주소 변환)이 필요합니다. Amazon VPC 연결 Lambda 함수에 대한 인터넷 액세스 권한을 부여하려면 아웃바운드 트래픽을 퍼블릭 서브넷의 NAT 게이트웨이 또는 NAT 인스턴스로 라우팅합니다.

자세한 내용은 Amazon VPC 사용 설명서의 인터넷 게이트웨이 단원을 참조하십시오. 설정 예제는 퍼블릭 및 프라이빗 서브넷이 있는 VPC (NAT) 단원을 참조하십시오.

Amazon VPC 연결 Lambda 함수의 인터넷 액세스 문제를 해결하려면

AWS Systems Manager를 사용하여 Amazon VPC에 있는 AWS Lambda 함수의 인터넷 액세스 문제를 해결하려면 어떻게 해야 합니까?을 참조하십시오

참고: Amazon VPC 엔드포인트를 사용하여 인터넷에 액세스하지 않고도 Amazon VPC 내에서 지원되는 AWS 서비스에 연결할 수 있습니다.

해결 방법

(선택 사항) AWS 관리 콘솔의 VPC 마법사를 사용하여 새 Amazon VPC를 생성합니다.

참고: VPC 마법사를 사용하여 새 Amazon VPC를 생성하는 경우에는 VPC에 대한 Lambda 실행 역할 생성 단원을 건너뛸 수 있습니다.

1.    AWS 관리 콘솔에서 VPC 마법사를 엽니다.

2.    퍼블릭 및 프라이빗 서브넷이 있는 VPC를 선택합니다. 새로운 퍼블릭 서브넷프라이빗 서브넷 (연결된 인터넷 게이트웨이 및 NAT 게이트웨이 포함)이 Amazon VPC 콘솔에 나타납니다.

Amazon VPC에 하나의 퍼블릭 서브넷과 하나 이상의 프라이빗 서브넷을 생성합니다.

자세한 내용은 VPC에 서브넷 생성 단원을 참조하여 각 서브넷을 생성합니다.

서브넷을 생성할 때 [이름 태그] 에 퍼블릭 또는 프라이빗 서브넷을 식별하는 각 서브넷의 이름을 입력합니다. 예: 퍼블릭 서브넷, 프라이빗 Lambda 1프라이빗 Lambda 2.

참고: 서로 다른 가용 영역에 둘 이상의 프라이빗 서브넷을 생성하는 것이 모범 사례입니다. 이 방법은 중복성을 생성하고 Lambda 서비스가 함수에 대한 고가용성 유지할 수 있도록 합니다.

인터넷 게이트웨이를 생성하여 Amazon VPC에 연결합니다.

자세한 내용은 인터넷 게이트웨이 생성 및 연결 단원을 참조하십시오.

NAT 게이트웨이 생성

자세한 내용은 NAT 게이트웨이 생성 단원을 참조하십시오. NAT 게이트웨이를 생성할 때 [서브넷] 에서 퍼블릭 서브넷으로 만들 서브넷을 선택합니다. (이전 예제에서 볼 수 있는 퍼블릭 서브넷.)

참고: NAT 게이트웨이 설정을 테스트하려면 Amazon VPC 사용 설명서의 퍼블릭 NAT 게이트웨이 테스트를 참조하십시오.

퍼블릭 서브넷과 프라이빗 서브넷용 사용자 지정 라우팅 테이블 두 개를 만듭니다.

참고: Amazon VPC 연결 Lambda 함수는 요청 시 연결된 서브넷을 임의로 선택합니다. 함수가 사용하는 모든 서브넷은 잘못 구성된 서브넷을 사용하는 Lambda로 인해 발생하는 임의의 오류를 방지하기 위해 동일한 구성을 가져야 합니다.

자세한 내용은 사용자 지정 라우팅 테이블 만들기 단원을 참조하십시오. 라우팅 테이블을 만들 때 [이름 태그] 에 연결된 서브넷을 식별하는 데 도움이 되는 각 라우팅 테이블의 이름을 입력합니다. 예: 퍼블릭 서브넷 프라이빗 Lambda.

각 라우팅 테이블에 대해 다음을 수행해야 합니다.

퍼블릭 서브넷의 라우팅 테이블의 경우

1.    퍼블릭 서브넷 라우팅 테이블(Public Subnet)을 퍼블릭으로 설정할 서브넷에 연결합니다.

2.    다음 구성을 포함하는 라우팅 테이블에 새 경로를 추가합니다.
[Destination]에 [0.0.0.0/0]을 입력합니다.
[Target]에서 [Internet Gateway]를 선택한 다음, 생성한 인터넷 게이트웨이의 ID(igw-123example)를 선택합니다.
[경로 저장]을 선택합니다.

프라이빗 서브넷의 라우팅 테이블의 경우

1.    프라이빗 서브넷의 라우팅 테이블(Private Lambda)을 프라이빗 서브넷에 연결합니다.

2.    다음 구성을 포함하는 라우팅 테이블에 새 경로를 추가합니다.
[Destination]에 [0.0.0.0/0]을 입력합니다.
[대상]에서 NAT 게이트웨이를 선택합니다. 그런 다음 생성한 NAT 게이트웨이 (nat-123example)의 ID를 선택합니다.
중요: NAT 인스턴스를 사용한다면 [네트워크 인터페이스]를 선택하십시오.
[경로 저장]을 선택합니다.

참고: NAT 게이트웨이에 대한 경로가 활성 상태여야 합니다. NAT 게이트웨이가 삭제되고 라우팅을 업데이트하지 않은 경우 블랙홀 상태가 됩니다. 자세한 내용은 라우팅 테이블 업데이트를 참조하세요.

네트워크 ACL이 Lambda 함수의 아웃바운드 요청과 필요에 따라 인바운드 트래픽을 허용하는지 확인합니다.

Amazon VPC의 기본 네트워크 액세스 제어 목록(ACL)은 모든 인바운드 및 아웃바운드 트래픽을 허용합니다. 네트워크 ACL 규칙을 변경하는 경우 Lambda 함수에서 아웃바운드 요청을 계속 허용해야 합니다.

또한 네트워크 ACL이 VPC 구성에 따라 다음과 같은 인바운드 트래픽을 허용하는지 확인합니다.

NAT 게이트웨이를 사용하는 프라이빗 서브넷의 경우

임시 포트 1024-65535에서 인바운드 트래픽을 허용합니다.

NAT 인스턴스를 사용하는 프라이빗 서브넷의 경우

NAT 인스턴스 운영 체제에서 사용하는 휘발성 포트에서 인바운드 트래픽을 허용합니다.

참조: 자세한 내용은 Amazon VPC의 Internetwork Traffic Privacy를 참조하세요.

VPC에 대한 Lambda 실행 역할 생성

1.    AWS Identity and Access Management(IAM) 콘솔을 엽니다.

2.    역할 생성을 선택합니다. 역할 만들기 페이지가 열립니다.

3.    역할 생성 페이지에서 다음을 수행합니다.
[트러스트 엔터티 유형 선택(Select type of trusted entity)]에서 [AWS service]를 선택합니다.
일반적인 사용 사례의 경우 Lambda를 선택합니다.
[다음: 권한]을 선택합니다.
권한 정 연결에서 AWSLambdaVPCAccessExecutionRole을 검색합니다. 해당 이름의 정책을 선택합니다. 그런 다음, [다음: 태그]를 선택합니다.
(선택 사항) 사용 사례에 대한 태그를 추가합니다.
다음: 검토를 선택합니다.
역할 이름에 이 Lambda 실행 역할의 이름을 입력합니다. 예를 들어 lambda_vpc_basic_execution을 입력합니다.
(선택 사항) 역할 설명에 역할에 대한 설명을 입력합니다.
역할 생성을 선택합니다.

자세한 내용은 AWS Lambda 실행 역할IAM 콘솔에서 실행 역할 생성 단원을 참조하십시오.

Amazon VPC에 연결하도록 람다 Lambda 함수 구성

1.    Lambda 콘솔에서 함수페이지를 엽니다.

2.    Amazon VPC에 연결할 함수의 이름을 선택합니다.

3.    [구성]을 선택합니다.

4.    기존 역할에서기존 역할의 경우 앞에서 생성한 Lambda 실행 역할을 선택합니다.

5.    VPC에서 [편집]을 선택합니다. 이어서, 다음 작업을 수행합니다.
[Virtual Private Cloud(VPC)]에서 VPC를 선택합니다.
[서브넷]에서 생성한 프라이빗 서브넷을 선택합니다. 서브넷 ID 및 이름을 지정한 경우 서브넷 ID 및 이름으로 서브넷을 식별합니다.
[보안 그룹]에서 보안 그룹을 선택합니다.
참고: 기본 보안 그룹을 사용해도 모든 아웃바운드 인터넷 트래픽을 허용하며, 대부분의 경우에 충분합니다. 자세한 내용은 VPC의 보안 그룹을 참조하십시오.
[저장]을 선택합니다.