本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
非同步調用 Lambda 函數
Amazon Simple Storage Service (Amazon S3) 和 Amazon Simple Notification Service (Amazon SNS) AWS 服務等數個 會以非同步方式叫用函數來處理事件。您也可以使用 AWS Command Line Interface (AWS CLI) 或其中一個 AWS SDKs 非同步叫用 Lambda 函數。當您以非同步方式呼叫函數時,您不需要等待來自函數程式碼的回應。您可以將事件傳遞給 Lambda,而 Lambda 會處理其餘的工作。您可以設定 Lambda 處理錯誤的方式,且可將調用記錄傳送至 Amazon Simple Queue Service (Amazon SQS) 或 Amazon EventBridge (EventBridge) 這類下游資源,以便將您應用程式的元件鏈結在一起。
下圖顯示以非同步方式來調用 Lambda 函數的用戶端。Lambda 會先將事件排入佇列,再將事件傳送到函數。
針對非同步調用,Lambda 會將事件置放在佇列中,並傳回成功回應,其中不包含其他資訊。單獨的程序會從佇列讀取事件,並將事件傳送到您的函數。
若要使用 AWS Command Line Interface (AWS CLI) 或其中一個 AWS SDKs 非同步叫用 Lambda 函數,請將 InvocationType 參數設定為 Event。下列範例顯示 AWS CLI 命令來叫用 函數。
aws lambda invoke \ --function-name my-function \--invocation-typeEvent\ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json
您應該會看到下列輸出:
{
"StatusCode": 202
}如果您使用的是第 2 AWS CLI 版,則需要 cli-binary-format選項。若要讓此成為預設的設定,請執行 aws configure set cli-binary-format raw-in-base64-out。若要取得更多資訊,請參閱《AWS Command Line Interface 使用者指南第 2 版》中 AWS CLI 支援的全域命令列選項。
輸出檔 (response.json) 不包含任何資訊,但仍會在您執行此命令時建立。如果 Lambda 無法將事件新增到佇列,錯誤訊息就會顯示在命令輸出中。