使用 lambda 创建并行步进函数

Create a parallel step function with a lambda

我对 AWS 的步进函数部分有疑问

我有一个功能可以查看和更新​​数据库中的数据。但是因为我们只能有 1000 个,因为我们可以有 1 000 000 个项目要更新,所以我想用 lambda 来管理它 10 000 或 100 000。

但最好的解决方案应该是并行管理它们以同时更新每个数据并一起完成它们

为此,我想用 aws-sdk 创建一个 Lambda 函数,它应该用 X 个任务创建一个并行步进函数,每个任务将管理数据库的 10 000 或 100 000 个项目

但是当我阅读 aws-sdk 文档时,似乎无法创建并行步进函数,即使是从模板中也是如此

所以我的问题是,是否可以使用 aws-sdk 从 Lambda 函数创建并行步进函数?或者你对我的问题有更好的解决方案吗?

提前致谢

更新:为了给你更多信息,我的问题是我必须在每个月的第一天更新我的数据库中的未知数据插入,问题是我需要调用 API return 数据需要 15 秒(这不是我们的 API 所以我无法尝试升级 return 时间)。

如果我只使用 Lambda 函数,它会在 15 分钟后超时。

突然想到用Step函数对每条数据执行Lambda函数,但问题是,如果我们有很多数据,可能需要24小时以上,我想找一个我可以并行执行我的 Lambda 函数以优化时间的解决方案,所以我考虑了 step 函数的并行任务。

但是因为数据的数量每个月都会变化,我不知道如何动态增加或减少我的步进函数的分支数,这就是为什么我想到从另一个 Lambda 生成我的步进函数

I have a function to watch and update data in databases.

我想你需要看的是某种 user/data 事件?看什么?要更新什么?

在我给你一些架构建议之前,你能提供更多信息吗?

顺便说一句,orchestrate/invoke Lambda 函数是 Step Functions,而不是其他函数。


更新的答案:

所以您似乎面临 Lambda 最大执行时间 15 分钟的硬性限制。我可以看到 3 种方法:

  1. 不使用Lambda函数,而是使用ECS容器或EC2实例来处理大量的数据处理和数据库写入。但是,这需要大量代码重写和 infrastructure/architectural 更改。

  2. 找出一种分解输入数据的方法,这样您就可以将处理分散到多个 Lambda 函数实例,即:输入数据 -> Lambda 分解任务 -> SQS 消息 -> Lambda 来处理每个任务。但我担心的是,分解输入数据的任务可能也需要大量时间。

  3. 在Lambda执行超时前,标记当前处理的位置,调用与原始事件+位置偏移量相同的Lambda函数。下一个 Lambda 实例将从上一个执行停止的地方开始处理数据。 https://medium.com/swlh/processing-large-s3-files-with-aws-lambda-2c5840ae5c91