【发布时间】:2020-11-06 15:26:41
【问题描述】:
我正在编写一个代码,其中 Lambda 函数 1(称为 L1)对来自 SQS 队列的消息执行。我想在 L1 完成一周后执行另一个 lambda(称为 L2)并希望将 L1 的输出传递给 L2。
执行环境:Java
对于我的应用程序,我们预计 L1 上每天有大约 10k 个请求。并且对 L2 的请求数量相同。
如果运行一周,我们可以在高峰期有大约 70k 的活跃执行。
我尝试过的事情:
带有 cron 的 Cloudwatch 事件: 我可以安排一个具有指定时间或日期的 cron,这将触发 L2。但我找不到通过预定 Cloudwatch 事件传递输入的方法。
具有新规则的 Cloudwatch 事件: 在第一个 lambda 结束时,我可以创建一个具有指定时间和指定输入的新 cloudwatch 规则。但这将创建尽可能多的规则(就我而言,每天可能有大约 10k 条新的 cloudwatch 规则)。不确定这是否是一种好的做法,甚至是否受支持。
步进函数: 目前有两种类型的步进函数。 标准:支持等待一年,但任何时候只支持 25k 主动执行。不会扩展,因为我的应用程序在第一周结束时已经有 70k 活跃执行。 https://docs.aws.amazon.com/step-functions/latest/dg/limits.html
Express: 对主动执行的次数没有限制,但最多支持 5 分钟的执行。之后会超时。 https://docs.aws.amazon.com/step-functions/latest/dg/express-limits.html
【问题讨论】:
-
什么是时间分辨率 - 即 1 周后的准确度必须是多少?
-
至少要晚 1 周。
-
在我的回答中添加了一种新的处理方式。
标签: amazon-web-services aws-lambda