如何對連線到 Amazon VPC 的 Lambda 函數授予網際網路存取權?

2 分的閱讀內容
0

我想對連線到 Amazon Virtual Private Cloud (Amazon VPC) 的 AWS Lambda 函數授予網際網路存取權。

簡短描述

從私有子網路存取網際網路,需要網路位址轉譯 (NAT)。若要對 Amazon VPC 連接的 Lambda 函數授予網際網路存取權限,請將其輸出流量路由到公有子網路中的 NAT 閘道NAT 執行個體

如需詳細資訊,請參閱使用網際網路閘道連線至網際網路。如需設定範例,請參閱具有私人子網路和 NAT 中的伺服器的 VPC

**注意:**您也可以使用 Amazon VPC 端點,在沒有接入網際網路時從 Amazon VPC 內部連線到支援的 AWS 服務。

解決方法

(選擇性) 使用 AWS 管理主控台中的 VPC 精靈建立新的 Amazon VPC

**注意:**如果您使用 VPC 精靈來建立新的 Amazon VPC,請跳至下列部分: 為 VPC 建立 Lambda 執行角色。

1.    在 AWS 管理主控台中開啟 VPC 精靈

2.    選擇具備公有和私有子網路的 VPC。新的公有子網路私有子網路,包括其相關的網際網路閘道和 NAT 閘道,會出現在 Amazon VPC 主控台中。

在 Amazon VPC 中建立公有子網路和一個或多個私有子網路

如需指示,請參閱建立子網路以建立每個子網路。

建立子網路時,對於名稱標籤,為每個子網路輸入一個名稱,以識別其為公有或私有子網路。例如: 公有子網路私有 lambda 1私有 lambda 2

**注意:**在不同的可用區域建立多個私有子網路是最佳做法。此做法可建立備援,允許 Lambda 服務維持函數的高可用性

建立網際網路閘道並將其連接至您的 Amazon VPC

如需指示,請參閱建立和連接網際網路閘道

建立 NAT 閘道

如需指示,請參閱建立 NAT 閘道。建立 NAT 閘道時,對於子網路,選擇要公開的子網路。(從上一個範例中: 公有子網路。)

**注意:**若要測試 NAT 閘道設定,請參閱測試公有 NAT 閘道

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

**注意:**當 Amazon VPC 連接的 Lambda 函數提出要求時,它會隨機選取相關的子網路。如果函數使用設定錯誤的子網路,則會出現錯誤。為了防止隨機錯誤,請確保對函數使用的所有子網路使用相同的組態。

如需指示,請參閱建立自訂路由表。建立路由表時,對於名稱標籤,為每個路由表格輸入一個名稱,以協助您識別與其關聯的子網路。例如: 公有子網路私有 Lambda

對於每個路由表,請確定您已完成下列步驟:

對於公有子網路的路由表

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

2.    將新路由加入至包含下列組態的路由表

對於目的地,輸入 0.0.0.0/0
對於目標,選擇網際網路閘道,然後選擇您建立之網際網路閘道的 ID (igw-123example)。選擇儲存路線

對於私有子網路的路由表

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

2.    將新路由加入至包含下列組態的路由表

對於目的地,輸入 0.0.0.0/0
對於目標,選擇 NAT 閘道。然後,選擇您建立的 NAT 閘道 (nat-123example) 的 ID。

重要:如果您使用的是 NAT 執行個體,請改為選擇網路介面。選擇儲存路線

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

確認您的網路 ACL 是否允許來自 Lambda 函數的輸出請求,以及需要的輸入流量

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

此外,請確定網路 ACL 根據您的 VPC 組態允許下列輸入流量:

  • 對於使用 NAT 閘道的私有子網路:允許暫時連接埠 1024-65535 上的輸入流量。
  • 對於使用 NAT 執行個體的私有子網路:允許 NAT 執行個體作業系統使用的暫時連接埠上的輸入流量。

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

為 VPC 建立 Lambda 執行角色

1.    開啟 AWS 身分與存取管理 (IAM) 主控台中的角色頁面

2.    選擇儲存路線建立角色頁面將會開啟。

3.    在「建立角色」頁面上,完成下列步驟:

對於選取受信任實體的類型,選擇 AWS 服務
對於一般使用案例,請選擇 Lambda
選擇下一步: 權限
附加權限政策下,搜尋 AWSLambdaVPCAccessExecutionRole
選取使用該名稱的政策。然後選擇下一步: 標籤
(選擇性) 為您的使用案例新增標籤
選擇下一步: 檢閱
對於角色名稱,輸入 Lambda 執行角色的名稱。例如:lambda_vpc_basic_execution
(選擇性) 對於角色描述,輸入角色的描述。選擇建立角色

將角色附加到 Lambda 函數

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

2.    選擇要連線到 Amazon VPC 的函數名稱。

3.    選擇組態標籤,然後選擇權限

4.    在執行角色中,選擇編輯

5.    選擇現有角色下拉式清單,然後選擇您的角色。例如:lambda_vpc_basic_execution

6.    選擇儲存

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

設定 Lambda 函數以連線到 Amazon VPC

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

2.    選擇要連線到 Amazon VPC 的函數名稱。

3.    選擇組態標籤。

4.    從左側導覽列中選擇 VPC,然後選擇編輯。然後,輸入以下欄位:

對於虛擬私有雲端 (VPC),選擇您的 VPC。
對於子網路,選取您建立的私有子網路。使用子網路 ID 以及名稱 (如有命名) 來識別他們。
對於安全群組,選擇一個安全群組。

注意:預設安全群組允許所有輸出網際網路流量,並且適用於大多數使用案例。如需詳細資訊,請參閱使用安全群組控制 AWS 資源的流量

5.    選擇儲存

相關資訊

將輸出網路連線至 VPC 中的資源

排解 Lambda 中的網路問題

如何對 Lambda 函數故障進行疑難排解?

AWS 官方
AWS 官方已更新 1 年前