gpt4 book ai didi

amazon-web-services - 带有 SQS 触发器的 AWS Lambda,SQS Lambda 目的地,从不添加到目的地队列

转载 作者:行者123 更新时间:2023-12-03 13:45:47 27 4
gpt4 key购买 nike

我有一个从 SQS 队列触发的简单 lambda 函数,我正在使用新的 Lambda 目的地 功能。

设置为从 QUEUE_A 触发,对payload body做一些修改,然后发送到QUEUE_B成功 , 或 QUEUE_ERRORS故障 .
QUEUE_BQUEUE_ERRORS设置为 目的地 在 lambda 函数上。

当我从 CLI 触发 lambda 时,我在 QUEUE_B 上得到了一条记录。有良好的记录,并在 QUEUE_ERRORS记录不佳。所以,它似乎有效。

但是,当从 SQS 触发 lambda 时,我从未在 QUEUE_B 上获得记录。或 QUEUE_ERRORS .一个好的记录运行 lambda,如果记录不好,它会转到 QUEUE_A_DEADLETTER ,这是我不想要的。

我试过配置 QUEUE_A没有重试/死信 - 如果我这样做,如果记录不好,它将永远重试(无论我设置的可见性/重试多低)。

我接下来可以尝试什么?

编辑 :
CloudWatch 准确地向我展示了我希望看到的内容 - 我在“好”记录上看到了良好的日志,在“坏”记录上看到了堆栈跟踪/异常,所以这不是函数本身的问题 AFAIK。

编辑 :
正在使用 SNS 触发器和目标替换 SQS 触发器和目标。所以,我认为这与 SQS 同步和 SNS 异步有关?有人知道吗?

enter image description here

最佳答案

如果您同步调用 Lambda 函数,则不会触发目标。您可以阅读 this article以获得更好的想法。

Destinations 的主要用例是了解 Lambda 函数的异步执行结果,主要是为了更好地了解执行细节,如请求和响应上下文、有效载荷、异常堆栈跟踪等。 因此,如果 Lambda 被同步调用(例如,使用 cli 或通过 SQS 触发器),则不会将消息传递到目标端点。

当您使用 CLI 时,您会使用 aws lambda invoke-async .相反,如果您使用 aws lambda invoke (同步执行 Lambda),您将看到相同的问题,您的目标端点将不会收到消息。

您可以将目标终端节点保持为 SQS(您将在上面的文章中看到一个工作示例),但您的 Lambda 触发器必须更改为异步触发器。

关于amazon-web-services - 带有 SQS 触发器的 AWS Lambda,SQS Lambda 目的地,从不添加到目的地队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59669947/

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