

# 配置 Lambda 异步调用的错误处理设置
<a name="invocation-async-configuring"></a>

使用以下设置来配置 Lambda 如何处理异步函数调用的错误和重试：
+ [MaximumEventAgeInSeconds](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumEventAgeInSeconds)：Lambda 在异步事件队列中保留事件的最长时间（以秒为单位），此后将丢弃事件。
+ [MaximumRetryAttempts](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumRetryAttempts)：函数返回错误时 Lambda 重试事件的最大次数。

使用 Lambda 控制台或 AWS CLI 配置有关函数、版本或别名的错误处理设置。

------
#### [ Console ]

**配置错误处理**

1. 打开 Lamba 控制台的 [Functions](https://console.aws.amazon.com/lambda/home#/functions)（函数）页面。

1. 选择函数。

1. 选择 **Configuration（配置）**，然后选择 **Asynchronous invocation（异步调用）**。

1. 在 **Asynchronous invocation (异步调用)** 下，选择 **Edit (编辑)**。

1. 配置以下设置。
   + **Maximum age of event**（事件的最长期限）– Lambda 在异步事件队列中保留事件的最长时间（最长 6 小时）。
   + **Retry attempts**（重试次数）– 函数返回错误时 Lambda 重试的次数（0 到 2 之间）。

1. 选择**保存**。

------
#### [ AWS CLI ]

要通过 AWS CLI 配置异步调用，请使用 [put-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/put-function-event-invoke-config.html) 命令。以下示例配置一个最长事件期限为 1 小时且无重试的函数。

```
aws lambda put-function-event-invoke-config \ 
  --function-name error \
  --maximum-event-age-in-seconds 3600 \
  --maximum-retry-attempts 0
```

`put-function-event-invoke-config` 命令覆盖函数、版本或别名上的任何现有配置。要配置某个选项而不重置其他选项，请使用 [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html)。以下示例配置 Lambda，以便在无法处理事件时将记录发送到名为 `destination` 的标准 SQS 队列。

```
aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'
```

------

您应看到以下输出：

```
{
    "LastModified": 1573686021.479,
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
    "MaximumRetryAttempts": 0,
    "MaximumEventAgeInSeconds": 3600,
    "DestinationConfig": {
        "OnSuccess": {},
        "OnFailure": {}
    }
}
```

当调用事件超过最长期限或所有重试均失败时，Lambda 会丢弃该事件。要保留已丢弃事件的副本，请配置失败事件[目标](invocation-async-retain-records.md#invocation-async-destinations)。