失败的事件没有发送到死信队列?
Failed events not sent to Dead letter queue?
我在 AWS Lambda 配置中设置了死信队列,以处理失败的事件。但是当我尝试发送错误记录(大小为 ~1KB)时,它没有被发送到 DLQ。
以下是我遵循的步骤:-
从 aws cli 向运动流发送了无效记录。
Lambda 函数从流中轮询记录并尝试处理。由于输入格式错误导致失败。
- 检查了 Lambda 函数云监视日志以确认处理已导致错误。
- 检查了 Lambda 的云监视日志中的死信错误数,但它仍然是 0。还通过 AWS 控制台验证了 DLQ,其中可用消息仍然是 0。
AWS Lambda 中用于异步调用的配置:
- 事件的最大年龄 = 1 分钟,
- 重试次数 = 1
DLQ配置:
- 传递延迟:0 秒
- 默认可见性超时:30 秒,
- 最大邮件大小:256 KB
有人可以解释 SQS 中不可用的错误消息的可能原因吗?
注意:Lambda 具有对 SQS 执行所有操作所需的权限。并且没有其他 SQS 消费者。
这完全取决于您从函数返回的响应。如果响应失败并带有正确的错误代码,它肯定会被推送到 DLQ 中。
您可以删除 DLQ 配置,然后检查消息是否在可见时间后出现在 SQS 中。
Lambda 从 Kinesis 中读取数据 synchronously。
DLQ 仅用于 asynchronous Lambda 调用。
我在 AWS Lambda 配置中设置了死信队列,以处理失败的事件。但是当我尝试发送错误记录(大小为 ~1KB)时,它没有被发送到 DLQ。
以下是我遵循的步骤:-
从 aws cli 向运动流发送了无效记录。
Lambda 函数从流中轮询记录并尝试处理。由于输入格式错误导致失败。
- 检查了 Lambda 函数云监视日志以确认处理已导致错误。
- 检查了 Lambda 的云监视日志中的死信错误数,但它仍然是 0。还通过 AWS 控制台验证了 DLQ,其中可用消息仍然是 0。
AWS Lambda 中用于异步调用的配置:
- 事件的最大年龄 = 1 分钟,
- 重试次数 = 1
DLQ配置:
- 传递延迟:0 秒
- 默认可见性超时:30 秒,
- 最大邮件大小:256 KB
有人可以解释 SQS 中不可用的错误消息的可能原因吗?
注意:Lambda 具有对 SQS 执行所有操作所需的权限。并且没有其他 SQS 消费者。
这完全取决于您从函数返回的响应。如果响应失败并带有正确的错误代码,它肯定会被推送到 DLQ 中。 您可以删除 DLQ 配置,然后检查消息是否在可见时间后出现在 SQS 中。
Lambda 从 Kinesis 中读取数据 synchronously。
DLQ 仅用于 asynchronous Lambda 调用。