【问题标题】:AWS step functions map state: pass output from current iteration as input to next iterationAWS step 函数映射状态:将当前迭代的输出作为输入传递给下一次迭代
【发布时间】:2021-02-24 10:00:21
【问题描述】:

我有一个将数组作为输入的地图状态。我知道地图将遍历数组的元素。但是,我想要做的是将一次迭代的输出传递到下一次迭代的输入。在不写入 DB 或 S3 的情况下这可能吗?我已经尝试过无数种 InputPath、OutputPath 和 ResultPath 的组合,但是无论我如何尝试从状态 0 修改状态 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,
}

【问题讨论】:

  • 你能在 step 函数中添加一个示例输入吗?

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 2021-02-28
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 2021-03-03
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多