use*_*790 3 amazon-sqs aws-lambda
我有一个基本的 SQS 队列,触发 Lambda 并使用重新驱动策略,在 5 次重试后将失败的消息发送到 DLQ。 我读到 Lambda 应该将有关错误的消息属性添加到消息中
一切都按预期工作,除了当我查看 DLQ 中的消息时,我没有看到来自 Lambda 的任何 ErrorCode、ErrorMessage 属性。有人让这个工作吗?
您混淆了两个不同功能的行为。
\n\nSQS 队列可以有死信队列。
\n\n\n\n\n当
\n\n \nReceiveCount一条消息的长度超过maxReceiveCount队列的 时,Amazon SQS 会将消息移动到死信队列(及其原始消息 ID)。
Lambda 函数还可以有死信队列。
\n\n\n\n\n任何异步调用的 Lambda 函数在事件被丢弃之前,如果重试失败并且您不确定原因,请使用死信队列 (DLQ) 将未处理的事件定向到 Amazon SQS 队列或 Amazon SNS 主题以分析失败情况。
\n\n...
\n\n写入 DLQ 目标 ARN 的负载是原始事件负载,未对消息正文进行任何修改。消息的属性包含可帮助您了解为何未处理事件\xe2\x80\x99 的信息
\n\n \n
您拥有的是前者——带有 DLQ 的 SQS 队列,而不是后者——带有 DLQ 的 Lambda 函数。
\n\n在您的配置中,根据重新驱动策略,消息将按照描述简单地移至 DLQ,无需修改。
\n\n在侦听 SQS 队列的 Lambda 函数的 DLQ 中,无法接收您正在查找的消息,因为 SQS/Lambda 集成不使用异步函数调用。
\n\n\n\n\nLambda 轮询队列并与包含队列消息的事件同步调用您的函数。
\n\n \n
否则无法配置 SQS/Lambda 集成,并且使用 DLQ(而不是 SQS 队列)配置 Lambda 函数本身将不起作用。
\n\n解决方法是使用Lambda 函数的 CloudWatch 日志来查找有问题的消息。将 SQS MessageId 记录在代码中,以便稍后可以在日志中找到它。
\n| 归档时间: |
|
| 查看次数: |
2586 次 |
| 最近记录: |