我想對連線到 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 函數故障進行疑難排解?