AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

死信队列

默认情况下,系统在丢弃事件之前将重试两次异步调用失败的 Lambda 函数。使用死信队列 (DLQ),您可以向 Lambda 指明,应向 Amazon SQS 队列或 Amazon SNS 主题发送未处理的事件,然后再在其中采取进一步的操作。

要配置 DLQ,您可以在要向其发送事件负载的 Amazon SNS 主题或 Amazon SQS 队列的 Lambda 函数的 DeadLetterConfig 参数上指定目标 Amazon 资源名称 (ARN),如以下代码所示。有关创建 Amazon SNS 主题的更多信息,请参阅创建 SNS 主题。有关创建 Amazon SQS 队列的更多信息,请参阅教程:创建 Amazon SQS 队列

Copy
{ "Code": { "ZipFile": blob, "S3Bucket": “string”, "S3Key": “string”, "S3ObjectVersion": “string” }, "Description": "string", "FunctionName": "string", "Handler": "string", "MemorySize": number, "Role": "string", "Runtime": "string", "Timeout": number "Publish": bool, "DeadLetterConfig": { "TargetArn": "string" } }

Lambda 将把无法处理的事件定向到您为 Lambda 函数配置的 Amazon SNS 主题或 Amazon SQS 队列。没有关联 DLQ 的函数会丢弃用尽重试次数的事件。有关重试策略的更多信息,请参阅出错时重试。您需要明确提供到 DLQ 资源的读取/发布/sendMessage 访问权限,使其作为 Lambda 函数执行角色的部分权限。写入 DLQ 目标 ARN 的负载将成为未修改消息正文的原始事件负载。如下所述,消息的属性包含有助于您了解事件未经处理的原因信息:

名称 类型
RequestID 字符串 唯一的请求标识符
ErrorCode 数字 HTTP 3 位数错误代码
ErrorMessage 字符串 错误消息 (被截断为 1 KB)

如果出于某些原因,事件负载始终不能到达目标 ARN,Lambda 将增加名为 DeadLetterErrors 的 CloudWatch 指标的值,然后删除事件负载。