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

AWS step functions map state: pass output from current iteration as input to next iteration

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

"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,
}

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

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

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