SQS Lambda集成 - Lambda未处理队列消息

3

目前我正在使用SQS-Lambda集成。

Lambda的并发性是可用的。 SQS批处理设置为1个记录,0延迟。

SQS的可见性超时为15分钟,Lambda的最大执行时间为15分钟。

我想注意到有时候 SQS消息会被卡住,没有任何Lambda处理(在15分钟后它们会掉入死信队列,CloudWatch不会显示任何调用该消息的Lambda)。

有人遇到过同样的问题吗?

如果那很重要,我在VPC内运行Lambda。

1个回答

5
Lambda 后端代表您轮询 SQS,如果返回消息,则调用 Lambda 函数。如果调用成功,则将删除该消息;但是,若函数失败,则在可见性超时后消息将返回到队列(或 DLQ,这取决于您的重新驱动策略)。请查看此博客文章
请在 Cloudwatch 中检查函数是否有任何错误指标。您的 Lambda 函数可能会在运行任何代码之前失败。当发生这种情况时,会出现错误指标但无调用指标/日志,最可能的原因是权限不正确。

是的,在指标中有一个错误,没有任何日志。这就是为什么它如此令人困惑。 大部分时间都运行良好。每100条消息只有一两个失败。我不认为这可能是权限错误。 - undefined
我只看到关于它现在在VPC中的编辑。如果它大部分时间都能正常工作,那就排除了权限问题,但仍要确保Lambda具有VPC权限。由于它在VPC中,Lambda在被调用之前需要创建一个ENI,最可能的情况是无法出于某种原因创建ENI,因此导致失败。检查您的Cloudtrail日志是否有CreateNetworkInterface的任何失败,并确保您至少在2个私有子网中有足够的可用IP地址。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接