내용으로 건너뛰기

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

4분 분량
0

Amazon Virtual Private Cloud(Amazon VPC)에 연결된 AWS Lambda 함수에 인터넷 액세스 권한을 부여하고 싶습니다.

간략한 설명

기본적으로 Lambda 함수는 인터넷 액세스가 가능한 Lambda 관리형 VPC에서 실행됩니다. Lambda 함수를 퍼블릭 서브넷과 연결하더라도 함수에 프라이빗 IP 주소가 있으므로 인터넷에 연결할 수 없습니다.

Lambda 함수에서 AWS 계정의 VPC에 있는 리소스에 대한 인터넷 액세스를 제공하려면 NAT 게이트웨이 또는 NAT 인스턴스를 추가하십시오. 이 구성은 VPC가 인터넷에 액세스할 수 없는 한 해당 함수를 VPC 내 리소스로 제한합니다.

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

해결 방법

다음 리소스가 Lamda 함수에 대한 아웃바운드 인터넷 액세스를 허용하는지 확인합니다.

위의 리소스 중 하나라도 Lambda 함수에 인터넷 액세스 권한을 부여하지 않는 경우, 함수에 인터넷 액세스 권한을 부여하도록 리소스를 재구성하십시오. AWSSupport-TroubleshootLambdaInternetAccess를 실행하거나 인터넷에 대한 액세스 권한을 수동으로 부여할 수 있습니다.

AWSSupport-TroubleshootLambdaInternetAccess 런북 사용

사전 요구 사항

런북을 시작하기 전에 AWS Identify and Access Management(IAM) 사용자 또는 역할에 필요한 권한이 있는지 확인하십시오. 자세한 내용은 AWSSupport-TroubleshootLambdaInternetAccess필수 IAM 권한 섹션을 참조하십시오.

다음 단계를 완료하십시오.

  1. Systems Manager 콘솔을 엽니다.
  2. 탐색 창에서 관리 도구 변경을 확장한 다음, 자동화를 선택합니다.
  3. 런북 실행을 선택합니다.
  4. Amazon 소유 탭을 선택한 다음, TroubleshootLambdaInternetAccess를 검색합니다.
  5. AWSSupport-TroubleshootLambdaInternetAccess 카드를 선택합니다.
    참고: 자동화의 이름을 선택하지 마십시오.
  6. 다음을 선택합니다.
  7. 실행을 선택합니다.

런북의 출력을 검토하여 Lambda 함수가 인터넷에 액세스할 수 없게 된 원인과 문제 해결 방법을 확인하십시오.

수동으로 인터넷 액세스 권한 부여

Amazon VPC에서 퍼블릭 서브넷과 프라이빗 서브넷 생성

Lambda 함수용 프라이빗 서브넷과 NAT 게이트웨이용 퍼블릭 서브넷을 생성합니다. 이름 태그 필드에 서브넷을 퍼블릭 또는 프라이빗으로 식별하는 각 서브넷의 이름을 입력합니다. 예를 들어, 퍼블릭 서브넷, 프라이빗 Lambda 1, 프라이빗 Lambda 2를 사용합니다.

참고: 여러 가용 영역에 걸쳐 두 개 이상의 프라이빗 서브넷을 생성하는 것이 가장 좋습니다. 이 작업은 중복성을 생성하고 Lambda가 함수의 고가용성을 유지할 수 있도록 합니다.

인터넷 게이트웨이를 사용하여 서브넷에 인터넷 액세스 추가

인터넷 게이트웨이를 생성합니다. 그런 다음, VPC에 연결합니다.

NAT 게이트웨이 생성

NAT 게이트웨이를 생성합니다. 서브넷에서 공개하려는 서브넷을 선택합니다. 예를 들어, 퍼블릭 서브넷을 선택합니다.

(선택 사항) NAT 게이트웨이 설정을 테스트합니다.

두 개의 사용자 지정 라우팅 테이블 생성

참고: VPC의 Lambda 함수가 요청을 보낼 때 함수는 연결된 서브넷을 무작위로 선택합니다. 함수가 잘못 구성된 서브넷을 사용하는 경우 오류가 발생합니다. 이 문제를 방지하려면 함수에서 사용하는 모든 서브넷에 동일한 구성을 사용해야 합니다.

사용자 지정 라우팅 테이블을 설정하려면 다음 단계를 완료하십시오.

  1. 퍼블릭 서브넷용 라우팅 테이블과 프라이빗 서브넷용 라우팅 테이블을 생성합니다.
    이름 태그 필드에 각 라우팅 테이블의 이름을 입력하면 연결된 서브넷을 쉽게 식별할 수 있습니다. 예를 들어, 퍼블릭 서브넷프라이빗 Lambda를 사용합니다.
  2. 프라이빗 서브넷과 퍼블릭 서브넷을 라우팅 테이블에 연결합니다.
  3. 라우팅 테이블에 새 경로를 추가하고 다음 구성을 포함합니다.
    목적지0.0.0.0/0을 입력합니다.
    대상에서 퍼블릭 서브넷의 인터넷 게이트웨이를 선택하고 인터넷 게이트웨이 ID를 입력합니다. 프라이빗 서브넷의 NAT 게이트웨이를 선택하고 NAT 게이트웨이 ID를 입력합니다.
    중요: NAT 게이트웨이 대신 NAT 인스턴스를 사용하는 경우 NAT 게이트웨이 대신 네트워크 인터페이스를 선택합니다.
  4. 경로 저장을 선택합니다.

참고: NAT 게이트웨이에 대한 경로가 활성 상태인지 확인하십시오. NAT 게이트웨이를 삭제하고 경로를 업데이트하지 않으면 경로가 블랙홀 상태가 됩니다.

네트워크 ACL 구성 검토

VPC의 기본 네트워크 ACL은 모든 인바운드 및 아웃바운드 트래픽을 허용합니다. 네트워크 ACL 규칙을 변경하는 경우 Lambda 함수의 아웃바운드 요청을 허용해야 합니다. 또한 네트워크 ACL에서 다음 인바운드 트래픽을 허용하는지 확인하십시오.

  • NAT 게이트웨이를 사용하는 프라이빗 서브넷의 경우 임시 포트 1024-65535에서 인바운드 트래픽을 허용합니다.
  • NAT 인스턴스를 사용하는 프라이빗 서브넷의 경우 NAT 인스턴스 운영 체제(OS)에서 사용하는 임시 포트에서 인바운드 트래픽을 허용합니다.

자세한 내용은 Amazon VPC의 인터네트워크 트래픽 개인정보 보호 보장을 참조하십시오.

Lambda 실행 역할 생성

VPC에 대한 Lambda 실행 역할을 생성합니다. 그런 다음, 새 Lambda 실행 역할을 사용하도록 Lambda 함수를 업데이트합니다.

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

함수를 VPC에 연결합니다. 서브넷에서 프라이빗 서브넷을 선택합니다. 보안 그룹의 경우 보안 그룹을 선택합니다.

참고: 기본 보안 그룹은 모든 아웃바운드 인터넷 트래픽을 허용하며 대부분의 사용 사례에 충분합니다. 자세한 내용은 보안 그룹을 사용하여 AWS 리소스에 대한 트래픽 제어를 참조하십시오.

Amazon VPC 연결이 있는 Lambda 함수의 경우 송신 전용 인터넷 게이트웨이를 사용하여 인터넷에 액세스할 수 있습니다. 자세한 내용은 IPv6 지원을 참조하십시오.

관련 정보

Lambda의 네트워킹 문제 해결

Amazon VPC에 있는 Lambda 함수의 시간 초과 문제를 해결하려면 어떻게 해야 합니까?

Lambda 함수의 ETIMEDOUT 오류 문제를 해결하려면 어떻게 해야 합니까?

Lambda 함수에 Amazon VPC의 리소스에 대한 액세스 권한 부여

Lambda 함수 오류 문제를 해결하려면 어떻게 해야 합니까?