Amazon web services 如何定期运行AWS死信队列? 要求
我希望像cron一样定期将DLQ消息推送到Lambda函数 处境 我使用SQS和Lambda创建了一个批处理系统。 因此,我还准备了DLQ(死信队列)来存储失败的消息 AWS建议使用Lambda触发器在DLQ中重新运行失败消息。 我希望像cron一样定期自动地重新运行,但除了手动运行之外,AWS并没有说明如何执行此操作 如果我手动重新运行,我只映射lambda和DLQ。都做完了。 之后,我可以使用启用和禁用按钮动态地重新运行消息传递 否则,就更复杂了,因为没有API切换Lambda触发器的启用和禁用。 boto3 API:Amazon web services 如何定期运行AWS死信队列? 要求,amazon-web-services,aws-lambda,amazon-sqs,Amazon Web Services,Aws Lambda,Amazon Sqs,我希望像cron一样定期将DLQ消息推送到Lambda函数 处境 我使用SQS和Lambda创建了一个批处理系统。 因此,我还准备了DLQ(死信队列)来存储失败的消息 AWS建议使用Lambda触发器在DLQ中重新运行失败消息。 我希望像cron一样定期自动地重新运行,但除了手动运行之外,AWS并没有说明如何执行此操作 如果我手动重新运行,我只映射lambda和DLQ。都做完了。 之后,我可以使用启用和禁用按钮动态地重新运行消息传递 否则,就更复杂了,因为没有API切换Lambda触发器的启用
create\u event\u source\u mapping()
和delete\u event\u source\u mapping()
似乎是更好的方法。
但是delete\u event\u source\u mapping()
需要事件映射的UUID。我认为这表明我需要任何数据存储,如ElastiCache或其他。
但是,如果可能的话,我不想在这种情况下准备其他资源
我的解决方案
创建事件源映射()
激活(启用)事件源映射delete\u event\u source\u mapping()
谢谢。您可以为lambda函数配置定时触发器。在lambda函数中,您需要编写代码从DLQ获取消息并进行处理。在您的用例中不需要
事件源映射。只需让您的函数使用AWS SDK从DLQ本身获取消息。请注意,死信队列中存储的消息通常表示“出了问题”。仅仅重新处理这些消息并不能保证它们会再次工作。因此,您需要一个策略来处理“停留”在队列中的消息。谢谢您的评论。你简化了我的问题。你们的意思是我首先从预定的CloudWatch事件中调用lambda,然后lambda只轮询来自DLQ的消息。是吗?@SteaveStark是的。它需要具有SQS权限,并使用AWS SDK从队列中获取消息,一旦处理完成,就从队列中删除消息。