作者:钧广摄影__ | 来源:互联网 | 2023-08-31 05:39
篇首语:本文由编程笔记#小编为大家整理,主要介绍了我如何设置在流程开始后24小时触发一次AWS Lambda?相关的知识,希望对你有一定的参考价值。
我有以下模式(使用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小时再发送“成功”电子邮件,但我认为这是设计的故意部分。