Amazon web services 如何定期运行AWS死信队列? 要求

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触发器的启用

我希望像cron一样定期将DLQ消息推送到Lambda函数

处境 我使用SQS和Lambda创建了一个批处理系统。 因此,我还准备了DLQ(死信队列)来存储失败的消息

AWS建议使用Lambda触发器在DLQ中重新运行失败消息。

我希望像cron一样定期自动地重新运行,但除了手动运行之外,AWS并没有说明如何执行此操作

如果我手动重新运行,我只映射lambda和DLQ。都做完了。 之后,我可以使用启用禁用按钮动态地重新运行消息传递

否则,就更复杂了,因为没有API切换Lambda触发器的启用和禁用。 boto3 API:
create\u event\u source\u mapping()
delete\u event\u source\u mapping()
似乎是更好的方法。 但是
delete\u event\u source\u mapping()
需要事件映射的UUID。我认为这表明我需要任何数据存储,如ElastiCache或其他。 但是,如果可能的话,我不想在这种情况下准备其他资源

我的解决方案
  • 云观察事件调用lambda
  • lambda使用
    创建事件源映射()
    激活(启用)事件源映射
  • lambda停用(禁用)事件源映射使用
    delete\u event\u source\u mapping()
  • 起初我觉得不错,但在第三个过程中,lambda想知道第一个事件的UUID。我认为这个案例需要包含UUID的数据存储

    有没有没有没有没有数据存储的解决方案


    谢谢。

    您可以为lambda函数配置定时触发器。在lambda函数中,您需要编写代码从DLQ获取消息并进行处理。在您的用例中不需要
    事件源映射。只需让您的函数使用AWS SDK从DLQ本身获取消息。请注意,死信队列中存储的消息通常表示“出了问题”。仅仅重新处理这些消息并不能保证它们会再次工作。因此,您需要一个策略来处理“停留”在队列中的消息。谢谢您的评论。你简化了我的问题。你们的意思是我首先从预定的CloudWatch事件中调用lambda,然后lambda只轮询来自DLQ的消息。是吗?@SteaveStark是的。它需要具有SQS权限,并使用AWS SDK从队列中获取消息,一旦处理完成,就从队列中删除消息。