无法发送失败的事件到死信队列吗?

时间:2020-01-27 15:59:27

标签: amazon-web-services aws-lambda amazon-sqs amazon-kinesis

我已经在AWS Lambda配置中设置了一个死信队列,以处理失败的事件。但是,当我尝试发送错误的记录(大小约为1KB)时,它没有发送到DLQ。

以下是我遵循的步骤:-

  1. 从aws cli发送无效记录到运动学流。

  2. Lambda函数从流中轮询记录并尝试处理。由于输入格式错误而导致失败。

  3. 检查了Lambda函数云监视日志,以确认处理已导致错误。
  4. 在Lambda的云监视日志中检查了死信错误编号,但仍为0。还通过AWS控制台验证了DLQ,可用消息仍为0。

AWS Lambda中用于异步调用的配置:

  • 最大活动年龄= 1分钟,
  • 重试次数= 1

DLQ的配置:

  • 交货延迟:0秒
  • 默认可见性超时:30秒,
  • 最大邮件大小:256 KB

有人可以解释SQS中没有错误消息的可能原因是什么吗?

注意:Lambda具有在SQS上执行所有操作所需的权限。而且没有其他SQS使用者。

2 个答案:

答案 0 :(得分:3)

Lambda从Kinesis synchronously读取数据。
DLQ仅用于asynchronous的Lambda调用。

答案 1 :(得分:0)

这全部取决于您从函数返回的响应。如果响应是带有正确错误代码的失败,则肯定会将其推送到DLQ中。 您可以删除DLQ配置,然后检查可见性时间之后消息是否出现在SQS中。