我如何设置在流程开始后24小时触发一次AWS Lambda?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何设置在流程开始后24小时触发一次AWS Lambda?相关的知识,希望对你有一定的参考价值。

我有以下模式enter image description here(使用AWS-IoTCore和AWS-Lambdas),该模式在某些MQTT事件上启动。在主过程结束时,标志success被保存在数据库中。此过程大约需要5分钟。我想在流程开始后的24小时内调用Lambda函数,以检查该标志是否存在于数据库中。没有步进功能的情况下,如何在Lambda函数中设置此超时或延迟?

答案

有两种可能的路径,可以“等待24小时”直到执行AWS Lambda函数。

在AWS Step Functions中使用“等待”步骤

AWS步长函数非常适合编排多步Lambda函数。有一个Wait state可以触发,然后流程可以触发另一个Lambda函数。步骤功能将跟踪每个单独的请求,您可以看到每个执行及其当前状态。听起来不错!

安排您自己的支票

使用Amazon CloudWatch Events来定期触发AWS Lambda函数。 Lambda函数可以查询数据库以查找未成功完成的进程的记录。但是,由于您的代码需要查找“不成功”的进程,因此首先需要将每个进程添加到数据库中(例如,在“ Process”功能的开头)。

替代方法:仅跟踪故障

上图中的体系结构将“成功”存储在数据库中,然后在24小时后对其进行检查。根据此图,它[[显示好像数据库的唯一目的是跟踪成功的过程。

相反,我建议:

    更改顶行以仅存储“失败的”进程及其失败的时间(假设可以检测到失败)
  • 定期触发AWS Lambda函数,它将:
    • 检查数据库
  • 检索早于24小时的失败进程
  • 将它们提交进行重新处理
  • 从数据库中删除记录,或将它们标记为“重试”,以避免将来再次检索
  • 基本上,数据库用于跟踪失败而不是成功。 “等待24小时”步骤被常规数据库检查失败的进程所代替。

    我不确定为什么系统要等待24小时再发送“成功”电子邮件,但我认为这是设计的故意部分。

  • 以上是关于我如何设置在流程开始后24小时触发一次AWS Lambda?的主要内容,如果未能解决你的问题,请参考以下文章

    定时器里如何再累加计时

    AWS cognito 用户迁移池触发器不适用于登录流程

    如何使用 AnyLogic 中的循环事件触发条件转换?

    如何在 java 上设置日期的 24 小时格式?

    触发物化视图刷新 - AWS Lambda

    如何使用 AWS CLI 从头开始​​创建堆栈?