【问题标题】:Create a parallel step function with a lambda使用 lambda 创建并行阶跃函数
【发布时间】:2021-08-21 07:30:26
【问题描述】:

我对 AWS 的 step 函数部分有疑问

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

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

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

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

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

提前致谢

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

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

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

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

【问题讨论】:

  • API 需要 15 秒才能返回一些数据,响应的格式是什么? JSON?行分隔的json?
  • 这是纯文本,但我们编写了一个脚本以 JSON 格式返回它

标签: amazon-web-services aws-lambda aws-sdk aws-step-functions


【解决方案1】:

我有一个监视和更新数据库中数据的功能。

我想您需要注意的是某种用户/数据事件?看什么?更新什么?

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

顺便说一下,编排/调用 Lambda 函数是 Step Functions,而不是其他。


更新答案:

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

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

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

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

【讨论】:

  • 我更新了我的答案。最近我使用方法 #3 处理一个 200MB 行分隔的 JSON 文件,其中包含 108 万条记录,总处理时间超过 50 分钟,它使用了 4 次连续的 Lambda 执行。
  • 感谢您的帮助,我想我已经找到了解决方案
猜你喜欢
  • 1970-01-01
  • 2018-05-21
  • 2019-06-18
  • 2021-08-30
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多