amazon-web-services - 为什么我的失败事件没有发送到 AWS Dead Letter Queue DLQ?
问题描述
我正在尝试设置 DLQ 以从 Lambda 函数中捕获失败的事件。
这是我所做的:
- 在SQS中创建了一个DeadLetterQueue(QueueX),
- 将我的 lambda 函数 DLQ 资源设置为“Amazon SQS”
- 将 SQS 队列设置为 QueueX
- 创建了一个策略以授予所有资源 (*) 的所有权限 (sqs:*);VisibilityTimeout=5 分钟,MessageRetentionPeriod=3 天
- 将策略附加到执行 lambda 函数的角色
现在通过“队列操作”,我可以发送一条消息并看到它显示在“可用消息”中。但是,如果我向 lambda 函数发送一个 http 请求——我故意创建了一个未捕获异常的格式错误的 JSON——我在 CloudWatch 中看到了错误消息,但没有发送到 QueueX。
我错过了什么?
解决方案
根据您的最新评论:
通过将来自 Postman 的 HTTP 请求直接发布到 lambda 的 Api 网关进行测试
这是您面临的问题的原因。
解释一下,当您有一个到 Lambda 的 API 网关代理时,API 网关会处理 Lambda 发回的错误情况(而不是 Lambda 服务本身,它具有 DLQ 配置),并且错误不会在 DLQ 中结束。为了实现 DLQ,您需要一个不同的设计,可能类似于调用 SNS -> Lambda,然后在失败时 Lambda 会将这些消息发送到 DLQ。
如果您没有代理集成,您也可以解决此问题,但我没有亲自测试过,我不确定这是否可行。
推荐阅读
- android - Android Studio 3.62 - 在 xml 文件中对齐视图
- sql - 我们如何找到哪些客户使用美国制造的商品下订单参考图片
- c++ - Visual Studio (Intellisense) 无运算符 std::ostringstream <<
- jquery - JQuery不会显示正确的时间
- python - extract text from HTML in a .txt Python BeautifulSoup
- mysql - SQL Query ON DUPLICATE KEY UPDATE 不起作用
- sql - SQL-如何从两个不同的表中选择数据?
- javascript - 未捕获的类型错误:无法读取未定义的属性“操作”
- uml - 如何在序列图中设置重复值验证?
- excel - 如何在 excel 中设置自定义第一个分隔符,然后使用标准分隔符