gpt4 book ai didi

amazon-web-services - AWS Lambda 调用错误未触发 SQS 死信队列

转载 作者:行者123 更新时间:2023-12-04 02:01:29 24 4
gpt4 key购买 nike

我有一个 AWS Lambda 函数,它订阅 DynamoDB 流并配置了 SQS dead letter queue (DLQ) .我可以看到在管理控制台中配置了正确的队列。此外,我还小心地为 sqs:SendMessage 授予了我的功能权限。在我的 DLQ 上。

订阅有效,但在调用错误时仍然“挂起”,就好像没有配置 DLQ。即,如果存在导致未处理异常的消息,该函数将继续重试此消息,直到它从流中删除。我可以看到调用错误的数量增加了,并且函数的 Cloudwatch 仪表板中没有显示任何 DLQ 错误。 SQS 队列保持为空。

我想要的是失败的消息被转发到我的 DLQ 并且订阅继续到下一条消息。有任何想法吗?

编辑

正如乔纳森种子在下面所说,DLQ 目前不适用于基于流的订阅。 AWS Support 确认他们正在努力实现这一点。

最佳答案

我相信这是因为 DynamoDB 流是基于流的事件源。 lambda documentation指出在处理基于流的事件源时“如果 Lambda 函数失败,AWS Lambda 会尝试处理错误的记录批次,直到数据过期”

根据我的理解,lambda 函数将重试,直到事件成功处理或过期并从流中消失,该事件永远不会被 lambda 函数“丢弃”,因为它们位于非基于流的事件源中。

如果您希望丢弃某些事件,手动将事件发布到队列/主题并成功返回,您可能必须将自己的故障处理作为主要 lambda 函数的一部分来实现。

关于amazon-web-services - AWS Lambda 调用错误未触发 SQS 死信队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com