使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

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

2 分的閱讀內容
0

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

簡短說明

Lambda 函數預設會在具有網際網路存取權的 Lambda 管理 VPC 中執行。若要存取 AWS 帳戶內 VPC 中的資源,請將 VPC 組態新增至該函數。除非 VPC 具有網際網路存取權,否則此組態會將該函數限制於存取 VPC 內的資源。

即使您將 Lambda 函數與公共子網絡想關聯,該函數也無法直接連線至網際網路。VPC 中的函數具有私有 IP 位址,並且需要 NAT 閘道或 NAT 執行個體才能存取網際網路。

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

解決方法

在 Amazon VPC 中建立公用子網路和私有子網路

為您的 Lambda 函數建立私有子網路,並為您的 NAT 閘道建立公用子網路。在 Name tag (名稱標籤) 欄位中,為每個子網路輸入一個可識別其為公用或私有子網路的名稱。例如,使用公用子網路私有 Lambda 1私有 Lambda 2

**注意:**最佳做法是在不同的可用區域建立多個私有子網路。此動作會建立備援,並允許 Lambda 為您的函數維護高可用性

使用網際網路閘道為子網路新增網際網路存取權

建立網際網路閘道,並將其附加至您的 VPC

建立 NAT 閘道

建立 NAT 閘道。針對 Subnet (子網路) 選擇要公開的子網路。例如,選擇 Public subnet (公用子網路)。

(選擇性) 測試 NAT 閘道設定

建立兩個自訂路由表

**注意:**當 VPC 中的 Lambda 函數發出請求時,該函數會隨機選取相關聯的子網路。如果函數使用設定錯誤的子網路,您會收到錯誤。為避免這項錯誤,請確保對函數使用的所有子網路使用相同的組態。

若要設定自訂路由表,請針對公用和私有子網路完成下列步驟:

  1. 建立自訂路由表。在 Name tag (名稱標籤) 欄位中輸入每個路由表的名稱,以協助您識別與其相關聯的子網路。例如,使用公用子網路私有 Lambda
  2. 將子網路的路由表與私有或公用子網路建立關聯
  3. 將新的路由新增至路由表,並包含下列組態:
    對於目的地,輸入 0.0.0.0/0
    針對 Target (目標) 選擇 Internet gateway (網際網路閘道) 或 NAT gateway (NAT 閘道)。對於公用子網路,選取網際網路閘道的 ID。對於私有子網路,選取 NAT 閘道的 ID。
    **重要:**如果您使用 NAT 執行個體而非 NAT 閘道,請選擇 Network interface (網路介面),而不是 NAT gateway (NAT 閘道)。
  4. 選擇 Save routes (儲存路由)。

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

檢閱您的網路 ACL 組態

VPC 中的預設網路存取控制清單 (network ACL) 允許所有傳入和傳出流量。如果您變更網路 ACL 規則,請確定您允許來自 Lambda 函數的傳出請求。此外,請確定您的網路 ACL 允許下列傳入流量:

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

如需詳細資訊,請參閱確保 Amazon VPC 中的網路間流量隱私權

建立 Lambda 執行角色

為 VPC 建立 Lambda 執行角色。然後,更新 Lambda 函數以使用新的 Lambda 執行角色

設定 Lambda 函數以連線到 VPC

將您的函數附加至 VPC,並設定下列設定:

  • 對於 Subnets (子網路),選取私有子網路。透過子網路 ID 和名稱加以識別。
  • 對於 Security groups (安全群組),選擇一個安全群組。
    注意:預設安全群組允許所有傳出網際網路流量,並且適用於大多數使用案例。如需詳細資訊,請參閱使用安全群組控制 AWS 資源的流量

對於具有 Amazon VPC 連線的 Lambda 函數,您可以使用僅限輸出的網際網路閘道來存取網際網路。如需詳細資訊,請參閱 IPv6 支援

相關資訊

對 Lambda 中的網路問題進行疑難排解

如何對 Amazon VPC 中的 Lambda 函數逾時問題進行疑難排解?

如何對 Lambda 函數中的 ETIMEDOUT 錯誤進行疑難排解?

讓 Lambda 函數存取 Amazon VPC 中的資源

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

AWS 官方
AWS 官方已更新 1 個月前