異步調用一個 Lambda 函數 - AWS Lambda

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

異步調用一個 Lambda 函數

Amazon 簡單存儲服務(Amazon S3)和 Amazon 簡單通知服務(亞馬遜SNS)等幾個 AWS 服務異步調用函數來處理事件。您也可以使用 AWS Command Line Interface (AWS CLI) 或其中一個非同步叫用 Lambda 函數。 AWS SDKs當您以非同步方式呼叫函數時,您不需要等待來自函數程式碼的回應。您可以將事件傳遞給 Lambda,而 Lambda 會處理其餘的工作。您可以設定 Lambda 處理錯誤的方式,並將叫用記錄傳送到下游資源,例如 Amazon 簡單佇列服務 (AmazonSQS) 或 Amazon EventBridge (EventBridge),以將應用程式的元件鏈結在一起。

下圖顯示以非同步方式來調用 Lambda 函數的用戶端。Lambda 會先將事件排入佇列,再將事件傳送到函數。

用戶端以非同步方式調用函數。Lambda 會先將事件排入佇列,再傳送至函數

針對非同步調用,Lambda 會將事件置放在佇列中,並傳回成功回應,其中不包含其他資訊。單獨的程序會從佇列讀取事件,並將事件傳送到您的函數。

若要使用 AWS Command Line Interface (AWS CLI) 或其中一個以非同步方式叫用 Lambda 函數 AWS SDKs,請將InvocationType參數設定為Event。下列範例顯示叫用函數的 AWS CLI 命令。

aws lambda invoke \ --function-name my-function \ --invocation-type Event \ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json

您應該會看到下列輸出:

{ "StatusCode": 202 }

如果您使用的是 AWS CLI 版本 2,則需要此cli-binary-format選項。若要讓此成為預設的設定,請執行 aws configure set cli-binary-format raw-in-base64-out。若要取得更多資訊,請參閱《AWS Command Line Interface 使用者指南第 2 版》AWS CLI 支援的全域命令列選項

輸出檔 (response.json) 不包含任何資訊,但仍會在您執行此命令時建立。如果 Lambda 無法將事件新增到佇列,錯誤訊息就會顯示在命令輸出中。