我正在考虑使用步进函数每 30 秒轮询一次外部数据库的更新,并运行一个映射 lambda,它将数据存储在 s3 中。
实现阶跃函数非常简单。我注意到限制设置为 1 年。http://docs.aws.amazon.com/step-functions/latest/dg/limits.html
我的问题是这项工作是否可行,或者为此目的使用步进功能是否存在缺陷。对于我的场景,每 1000 步 0.025 的价格是可以接受的。
我正在考虑使用步进函数每 30 秒轮询一次外部数据库的更新,并运行一个映射 lambda,它将数据存储在 s3 中。
实现阶跃函数非常简单。我注意到限制设置为 1 年。http://docs.aws.amazon.com/step-functions/latest/dg/limits.html
我的问题是这项工作是否可行,或者为此目的使用步进功能是否存在缺陷。对于我的场景,每 1000 步 0.025 的价格是可以接受的。
不可以。步进函数执行的执行历史大小限制为25,000 个事件。每个 Lambda 任务需要 5 个事件。所以你只能在状态机的一次执行中执行 500 个状态。
在您的情况下,状态机的执行将在 30*5000 秒(~4 小时)后失败。您可能需要每 4 小时开始一次新的执行,以确保您的数据库同步正常工作。
如何减轻这种情况?
注意:虽然这个问题很老,但我回答这个问题是为了未来的读者。
这个工作流程应该工作得很好——因为状态机可以持续长达一年,这几乎就像 AWS 鼓励这种类型的工作负载一样。
在旁注中,我实际上对这实际上是多么低的成本感到惊讶:全年运行的 3 个状态转换为 75 美元。