

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

# 非同步調用 Lambda 函數
<a name="invocation-async"></a>

數個 AWS 服務 (例如 Amazon Simple Storage Service (Amazon S3) 和 Amazon Simple Notiﬁcation Service (Amazon SNS)) 會以非同步方式調用函數以處理事件。您也可以使用 AWS Command Line Interface (AWS CLI) 或其中一個 AWS SDK 以非同步方式調用 Lambda 函數。當您以非同步方式呼叫函數時，您不需要等待來自函數程式碼的回應。您可以將事件傳遞給 Lambda，而 Lambda 會處理其餘的工作。您可以設定 Lambda 處理錯誤的方式，且可將調用記錄傳送至 Amazon Simple Queue Service (Amazon SQS) 或 Amazon EventBridge (EventBridge) 這類下游資源，以便將您應用程式的元件鏈結在一起。

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

![\[\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/features-async.png)


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

 若要使用 AWS Command Line Interface (AWS CLI) 或其中一個 AWS SDK 以非同步方式調用 Lambda 函數，須將 [InvocationType](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html#lambda-Invoke-request-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 支援的全域命令列選項](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list)。

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