本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
異步調用一個 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 會將事件置放在佇列中,並傳回成功回應,其中不包含其他資訊。單獨的程序會從佇列讀取事件,並將事件傳送到您的函數。
若要使用 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 無法將事件新增到佇列,錯誤訊息就會顯示在命令輸出中。