如何為連接到 Amazon VPC 的 Lambda 函數提供網際網路存取權限?

上次更新日期:2021-10-06

我想為連線到 Amazon Virtual Private Cloud (Amazon VPC) 的 AWS Lambda 函數提供網際網路存取權限。該如何設定?

簡短描述

從私有子網路存取網際網路需要網路位址轉譯 (NAT)。若要讓網際網路存取 Amazon VPC 連線的 Lambda 函數,請將其輸出流量傳送至公有子網路中的 NAT 閘道NAT 執行個體

如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的網際網路閘道。如需範例設定,請參閱含公有子網路和私有子網路 (NAT) 的 VPC

疑難排解與 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 中建立子網路以建立各子網路。

建立子網路時,請在名稱標籤中輸入每個子網路的名稱,將其標示為公有或私有子網路。例如:Public subnetPrivate lambda 1Private lambda 2

注意:最好在不同可用區域中建立多個私有子網路。這種做法可建立備援,並允許 Lambda 服務維護功能的高可用性

建立一個網際網路閘道,並將其連接到您的 Amazon VPC

如需說明,請參閱建立網際網路閘道並使其連接

建立 NAT 閘道

如需說明,請參閱 建立 NAT 閘道。當您建立 NAT 閘道時,請在子網路中選擇要設為公有的子網路。(參考上一個範例:公有子網路。)

注意:若要測試您的 NAT 閘道設定,請參閱《Amazon VPC 使用者指南》中的 測試公有 NAT 閘道

建立兩個自訂路由表,一個用於您的公有子網路,另一個則用於私有子網路

注意:與 Amazon VPC 連接的 Lambda 函數在發出請求時會隨機選取關聯的子網路。函數使用的所有子網路都應該具有相同的組態,以防止因 Lambda 使用設定錯誤的子網路而造成隨機錯誤。

如需說明,請參閱建立自訂路由表。建立路由表時,請在名稱標籤中輸入每個路由表的名稱,以便標示與其關聯的子網路。例如:Public subnetPrivate Lambda

每個路由表都務必執行下列動作:

若是公有子網路的路由表

1.    將公有子網路的路由表 (公有子網路 ) 與您想要設為公有的子網路建立關聯。

2.    在路由表中新增路由,其中包含下列組態:
目標中輸入 0.0.0.0/0
目標中,選擇網際網路閘道,然後選擇您所建立之網際網路閘道的 ID (igw-123example)。
選擇儲存路由

若為私有子網路的路由表

1.    建立私有子網路的路由表 (Private Lambda) 與私有子網路之間的關聯。

2.    在路由表中新增路由,其中包含下列組態:
目標中輸入 0.0.0.0/0
目標中選擇 NAT 閘道。然後,選擇您所建立的 NAT 閘道 (nat-123example) 的 ID。
重要事項:如果您使用的是 NAT 執行個體,請改用網路介面
選擇儲存路由

注意:請確保通往 NAT 閘道的路由處於作用中狀態。如果已刪除 NAT 閘道且您還沒有更新路由,則它們處於 blackhole 狀態。如需詳細資訊,請參閱更新路由表

確認您的網路 ACL 允許來自 Lambda 函數的輸出要求,必要時也允許輸入流量

Amazon VPC 中的預設網路存取控制清單 (ACL) 允許所有輸入和輸出流量。如果您變更網路 ACL 規則,請確保您仍允許來自 Lambda 函數的輸出要求。

也請確保您的網路 ACL 會根據您的 VPC 組態允許下列輸入流量:

若是使用 NAT 閘道的私有子網路

允許暫時連接埠 1024-65535 上的輸入流量。

若是使用 NAT 執行個體的私有子網路

允許 NAT 執行個體作業系統使用的暫時連接埠上的傳入流量。

注意:如需詳細資訊,請參閱 Amazon VPC 中的網際網路流量隱私權

為 VPC 建立 Lambda 執行角色

1.    開啟 AWS Identity and Access Management (IAM) 主控台中的角色頁面

2.    選擇建立角色建立角色頁面隨即開啟。

3.    在「建立角色」頁面上,執行下列動作:
選取受信任企業的類型中,選擇 AWS 服務
一般使用案例中,選擇 Lambda
選擇 下一步:許可
附加許可政策底下,搜尋 AWSLambdaVPCAccessExecutionRole。選取具有該名稱的政策。然後選擇下一步:標籤
(可選) 為您的使用案例新增標籤
選擇下一步:檢閱
角色名稱中,輸入 Lambda 執行角色的名稱。例如:lambda_vpc_basic_execution
(可選) 在角色描述中,輸入角色的描述。
選擇建立角色

如需詳細資訊,請參閱 AWS Lambda 執行角色在 IAM 主控台中建立執行角色

設定您的 Lambda 函數,使其與 Amazon VPC 連接

1.    在 Lambda 主控台中開啟函數頁面

2.    選擇要與 Amazon VPC 連接的函數名稱。

3.    選擇組態

4.    在現有角色底下的現有角色中,選擇您之前建立的 Lambda 執行角色。

5.    在 VPC 底下,選擇編輯。然後,執行以下操作:
Virtual Private Cloud (VPC) 中,選擇您的 VPC。
子網路中,選擇您建立的私有子網路。透過子網路 ID (以及您指定的名稱) 來識別它們。
安全群組中,選擇一個安全群組。
注意:預設安全群組允許所有輸出網際網路流量,而且此流量在大多數使用情況下已足夠。如需詳細資訊,請參閱 VPC 的安全群組
選擇儲存