我知道有一些方法可以在无服务器架构中实现cron作业,这样可以定期调用特定代码,但是我想为不同代码安排不同的时间。
[理想情况下,我将有一个添加了事件的队列,每个事件都有一个将其从队列中删除并发送到函数的日期。但是在Google搜索期间,我找不到任何这样的架构,只是周期性的,重复的,调度的,就像“每60秒调用一次”。
有没有像这样的被广泛采用的体系结构?
您可以为每个不同的时间创建CloudWatch Event规则。如果它们只是基于特定的时间点(例如1月31日下午1点)而不是重复发生(例如每天每天下午2点),则可以让lambda在运行后删除规则。
如果时间很长,并且该解决方案的伸缩性不是很好,则可以让lambda每分钟运行一次(或任何适合您的频率),然后让lambda从DynamoDB表中读取带有时间的记录。您可以将时间值放在GSI的排序键中,并查询过去的记录和尚未运行的记录。完成工作后,您将更新DynamoDB记录,以使其在以后的运行中不再返回。