AWS 步骤函数映射状态:将当前迭代的输出作为输入传递给下一次迭代

时间:2021-02-24 10:00:21

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

我有一个将数组作为输入的地图状态。我知道地图将遍历数组的元素。但是,我想要做的是将一次迭代的输出传递到下一次迭代的输入中。这是否可能不写入 DB 或 S3?我尝试了无数的 InputPath、OutputPath 和 ResultPath 组合,但是无论我做什么尝试将状态 1 的输入从状态 0 修改为从数组中读取,它似乎都无法修改输入数组从地图内。示例模板:

"Map":{
  "Type": "Map",
  "ItemsPath": "$.stages",
  "Parameters": {
    "stage.$": "$$.Map.Item",
  },
  "Iterator": {
    "StartAt": "StartStage",
    "States": {
      "StartStage":{
        "Type": "Task",
        "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
        "Parameters":{
          "FunctionName":"...",
          "Payload":{
            "myArgs.$": "$.stage.Value",
          }
        },
        "End": true
      }
    }
  },
  "MaxConcurrency": 1,
}

1 个答案:

答案 0 :(得分:1)

另一种选择是像这样创建一个while循环:

  1. 设置一个变量来跟踪您的索引 (pos = 0)
  2. 要迭代的所有状态
  3. 增加你的索引(pos++)
  4. 选择状态:如果您的索引少于您的项目数,请转到第 1 步。

这样您就可以访问上一次迭代的结果。 但是处理和合并迭代结果不会自动发生,您需要添加一个状态来为您完成。