選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

Lambda 在 VPC Lattice 中做為目標 - Amazon VPC Lattice

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Lambda 在 VPC Lattice 中做為目標

您可以使用 VPC Lattice 目標群組將 Lambda 函數註冊為目標,並設定接聽程式規則,將請求轉送至 Lambda 函數的目標群組。當服務將請求轉送至具有 Lambda 函數做為目標的目標群組時,它會呼叫您的 Lambda 函數,並以 JSON 格式將請求的內容傳遞給 Lambda 函數。

限制
  • Lambda 函數和目標群組必須在相同的帳戶中,且在相同的區域內。

  • 您可以傳送到 Lambda 函數的請求內文大小上限為 6 MB。

  • Lambda 函數可傳送的回應 JSON 大小上限為 6 MB。

  • 通訊協定必須是 HTTP 或 HTTPS。

準備 Lambda 函數

如果您使用 Lambda 函數搭配 VPC Lattice 服務,則適用下列建議。

調用 Lambda 函數的許可

當您使用 AWS Management Console 或 建立目標群組並註冊 Lambda 函數時 AWS CLI,VPC Lattice 會代表您將必要的許可新增至 Lambda 函數政策。

您也可以使用下列 API 呼叫自行新增許可:

aws lambda add-permission \ --function-name lambda-function-arn-with-alias-name \ --statement-id vpc-lattice \ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn target-group-arn
Lambda 函數版本控制

您可以為每個目標群組註冊一個 Lambda 函數。為了確保您可以變更 Lambda 函數,且 VPC Lattice 服務一律叫用 Lambda 函數的目前版本,請在向 VPC Lattice 服務註冊 Lambda 函數時,建立函數別名,並將別名包含在函數 ARN 中。如需詳細資訊,請參閱《 AWS Lambda 開發人員指南》中的 Lambda 函數版本建立 Lambda 函數的別名

為 Lambda 函數建立目標群組

建立目標群組以用於請求路由。如果請求內容符合接聽程式規則與 動作,以將其轉送到此目標群組,VPC Lattice 服務會叫用已註冊的 Lambda 函數。

使用主控台建立目標群組並註冊 Lambda 函數
  1. https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在導覽窗格的 VPC Lattice 下,選擇目標群組

  3. 選擇 Create target group (建立目標群組)

  4. 選取目標類型中,選取 Lambda 函數

  5. 針對 Target group name (目標群組名稱),輸入目標群組的名稱。

  6. 針對 Lambda 事件結構版本,選擇版本。如需詳細資訊,請參閱從 VPC Lattice 服務接收事件

  7. (選用) 若要新增標籤,請展開標籤,選擇新增標籤,然後輸入標籤索引鍵和標籤值。

  8. 選擇 Next (下一步)

  9. 對於 Lambda function (Lambda 函數),請執行以下其中一項:

    • 選取現有的 Lambda 函數。

    • 建立新的 Lambda 函數並選取它。

    • 稍後註冊 Lambda 函數。

  10. 選擇 Create target group (建立目標群組)

使用 AWS CLI建立目標群組和註冊 Lambda 函數

使用 create-target-groupregister-targets 命令。

從 VPC Lattice 服務接收事件

VPC Lattice 服務支援透過 HTTP 和 HTTPS 請求的 Lambda 調用。服務會以 JSON 格式傳送事件,並將 X-Forwarded-For 標頭新增至每個請求。

Base64 編碼

如果content-encoding標頭存在且內容類型不是下列其中一項,服務 Base64 會編碼內文:

  • text/*

  • application/json

  • application/xml

  • application/javascript

如果 content-encoding 標頭不存在,則 Base64 編碼取決於內容類型。對於上述內容類型,服務會照原樣傳送內文,無需 Base64 編碼。

事件結構格式

當您建立或更新類型 的目標群組時LAMBDA,您可以指定 Lambda 函數接收的事件結構版本。可能的版本為 V1V2

範例事件:V2
{ "version": "2.0", "path": "/", "method": "GET|POST|HEAD|...", "headers": { "header-key": ["header-value", ...], ... }, "queryStringParameters": { "key": ["value", ...] }, "body": "request-body", "isBase64Encoded": true|false, "requestContext": { "serviceNetworkArn": "arn:aws:vpc-lattice:region:123456789012:servicenetwork/sn-0bf3f2882e9cc805a", "serviceArn": "arn:aws:vpc-lattice:region:123456789012:service/svc-0a40eebed65f8d69c", "targetGroupArn": "arn:aws:vpc-lattice:region:123456789012:targetgroup/tg-6d0ecf831eec9f09", "identity": { "sourceVpcArn": "arn:aws:ec2:region:123456789012:vpc/vpc-0b8276c84697e7339", "type": "AWS_IAM", "principal": "arn:aws:iam::123456789012:assumed-role/my-role/my-session", "principalOrgID": "o-50dc6c495c0c9188", "sessionName": "i-0c7de02a688bde9f7", "x509IssuerOu": "string", "x509SanDns": "string", "x509SanNameCn": "string", "x509SanUri": "string", "x509SubjectCn": "string" }, "region": "region", "timeEpoch": "1690497599177430" } }
body

請求的本文。只有在通訊協定為 HTTP、HTTPS 或 gRPC 時才會顯示。

headers

請求的 HTTP 標頭。只有在通訊協定為 HTTP、HTTPS 或 gRPC 時才會顯示。

identity

身分資訊。以下是可能的欄位。

  • principal – 已驗證的主體。只有在 AWS 身分驗證成功時才會顯示。

  • principalOrgID – 已驗證主體的組織 ID。只有在 AWS 身分驗證成功時才會顯示。

  • sessionName – 已驗證工作階段的名稱。只有在 AWS 身分驗證成功時才會顯示。

  • sourceVpcArn – 請求產生所在 VPC 的 ARN。只有在可以識別來源 VPC 時才會顯示。

  • type – 如果使用身分驗證政策且 AWS 身分驗證成功AWS_IAM,則值為 。

如果使用 Roles Anywhere 登入資料且身分驗證成功,則下列是可能的欄位。

  • x509IssuerOu – 發行者 (OU)。

  • x509SanDns – 主體替代名稱 (DNS)。

  • x509SanNameCn – 發行者別名 (名稱/CN)。

  • x509SanUri – 主體替代名稱 (URI)。

  • x509SubjectCn – 主旨名稱 (CN)。

isBase64Encoded

指出內文是否已編碼 base64。只有在通訊協定為 HTTP、HTTPS 或 gRPC,且請求內文尚未是字串時,才會顯示。

method

請求的 HTTP 方法。只有在通訊協定為 HTTP、HTTPS 或 gRPC 時才會顯示。

path

請求的路徑。只有在通訊協定為 HTTP、HTTPS 或 gRPC 時才會顯示。

queryStringParameters

HTTP 查詢字串參數。只有在通訊協定為 HTTP、HTTPS 或 gRPC 時才會顯示。

serviceArn

接收請求之服務的 ARN。

serviceNetworkArn

交付請求之服務網路的 ARN。

targetGroupArn

接收請求之目標群組的 ARN。

timeEpoch

時間,以微秒為單位。

範例事件:V1
{ "raw_path": "/path/to/resource", "method": "GET|POST|HEAD|...", "headers": {"header-key": "header-value", ... }, "query_string_parameters": {"key": "value", ...}, "body": "request-body", "is_base64_encoded": true|false }

回應 VPC Lattice 服務

來自 Lambda 函數的回應必須包含 Base64 編碼狀態、狀態碼、狀態描述和標頭。您可以省略內文。

若要在回應的內文中包含二進位內容,您必須將內容以 Base64 編碼,並將 isBase64Encoded 設定為 true。服務會解碼內容以擷取二進位內容,並將其傳送至 HTTP 回應內文中的用戶端。

VPC Lattice 服務不遵守hop-by-hop標頭,例如 ConnectionTransfer-Encoding。您可以省略 Content-Length 標頭,因為服務會在傳送回應給用戶端之前先運算該標頭。

以下是 Lambda 函數的範例回應:

{ "isBase64Encoded": false, "statusCode": 200, "statusDescription": "200 OK", "headers": { "Set-cookie": "cookies", "Content-Type": "application/json" }, "body": "Hello from Lambda (optional)" }

多值標頭

VPC Lattice 支援來自用戶端的請求或來自 Lambda 函數的回應,其中包含具有多個值的標頭,或多次包含相同的標頭。VPC Lattice 會將所有值傳遞至目標。

在下列範例中,有兩個名為 的標頭header1具有不同的值。

header1 = value1 header1 = value2

使用 V2 事件結構,VPC Lattice 會傳送清單中的值。例如:

"header1": ["value1", "value2"]

使用 V1 事件結構,VPC Lattice 會將值合併為單一字串。例如:

"header1": "value1, value2"

多值查詢字串參數

VPC Lattice 支援具有相同金鑰多個值的查詢參數。

在下列範例中,有兩個以不同值命名QS1的參數。

http://www.example.com?&QS1=value1&QS1=value2

使用 V2 事件結構,VPC Lattice 會傳送清單中的值。例如:

"QS1": ["value1", "value2"]

使用 V1 事件結構時,VPC Lattice 會使用傳遞的最後一個值。例如:

"QS1": "value2"

取消註冊 Lambda 函數

如果您不再需要將流量傳送到您的 Lambda 函數,則可以將它取消註冊。取消註冊 Lambda 函數之後,傳輸中的請求會失敗,出現 HTTP 5XX 錯誤。

若要取代 Lambda 函數,建議您建立新的目標群組、向新目標群組註冊新函數,並更新接聽程式規則以使用新的目標群組,而非現有的目標群組。

使用主控台取消註冊 Lambda 函數
  1. https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在導覽窗格的 VPC Lattice 下,選擇目標群組

  3. 選擇目標群組的名稱,以開啟其詳細資訊頁面。

  4. Targets (目標) 索引標籤上,選擇 Deregister (取消註冊)

  5. 出現確認提示時,輸入 confirm,然後選擇取消註冊

使用 取消註冊 Lambda 函數 AWS CLI

使用 deregister-targets 命令。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。