【问题标题】:AWS step function ParallelAWS 阶梯函数并行
【发布时间】:2017-11-09 23:37:07
【问题描述】:

我正在尝试 AWS 步进功能。我正在尝试创建的内容。

  1. 从 dynamoDB (https://user:password@server1.com, https://user2:password@server2.com, etc..) 获取端点列表
  2. 从每个域中,我得到一个 id 列表。 /all
  3. 对于结果中的每个 id,我想做一系列 REST 等 https://user:password@server1.com/device/{id}(当时每个域只有一个并行请求)
  4. 将结果保存在 dynamoDB 中并检查是否为重复结果。

我知道如何进行其余调用并保存到 dynamoDB 等。 但问题还是找不到答案。 如何开始为从 dynamoDB 获得的数组中的每个域并行运行 /all?

【问题讨论】:

  • 你看过github.com/caolan/async吗?特别是async.each.
  • 伪代码:[启动函数步骤] -> [Lambda 函数 1 获取域列表 -> 将它们存储到 SQS] -> [并行:每个 Lambda 函数 2 从 SQS 获取一个域 -> 处理什么你想要的每个域] -> [结束功能步骤]

标签: node.js amazon-web-services aws-lambda aws-step-functions


【解决方案1】:

AWS Step Functions 具有不可变状态。一旦创建,它们就无法更改。鉴于这一事实,您的 Parallel 状态下不能有动态数量的分支。

要解决这个问题,您可能希望以不同的方式处理您的设计。与其使用单个 Step Function 解决此问题,不如考虑将其拆分为两个不同的状态机,如下所示。

Step Function #1:检索端点列表

  1. 开始
  2. 任务:从 DynamoDB 检索端点列表
  3. 任务对于每个端点,调用 Step Function #2 并传入端点
  4. 结束

您可以选择组合状态 #2 和 #3 以简化状态机和任务代码。

步骤函数 #2:执行 REST API 调用

  1. 开始 - 将单个端点作为输入状态
  2. 任务:针对端点执行一系列 REST 调用
  3. 任务:通过任务状态将结果存储在 DynamoDB 中
  4. 结束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多