如何从输入中复制值?

时间:2018-09-05 17:20:51

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

我正在尝试使用步进函数遍历一小组文件。我调用lambda来获取文件列表,该列表用作我的处理循环的输入。

我的输入,进入迭代部分:

{
    "name": "ConfigureIterator",
    "input": {
        "files": {
            "count": 3,
            "filelist": [
                "foo",
                "bar",
                "fizz"
            ]
        }
    }
}

我的通行证状态定义:

"ConfigureIterator": {
    "Type": "Pass",
    "Result": {
        "index": -1,
        "step": 1,
        "count": "$.files.count"
    },
    "ResultPath": "$.iterator",
    "Next": "Iterator"
}

我想将count的值从输入复制到传递步骤的结果中。但是,替换不会发生。输出:

  {
    "name": "ConfigureIterator",
    "output": {
        "files": {
        "count": 11,
        "filelist": [
            ...
        ]
        },
        "iterator": {
        "index": -1,
        "step": 1,
        "count": "$.files.count"
        }
    }
  }

通过状态是否不执行替换?我应该使用任务状态吗?如何定义“无为”任务状态?

1 个答案:

答案 0 :(得分:1)

即使在2020年,“通过”状态下的“结果”字段也不会插值。但是,“参数”字段可以。通过状态的定义是将输入传递到输出。因此,如果可以以所需的形式获取 input ,则可以自动获取所需的 output 。换句话说,只需将“结果”替换为“参数”,就可以了。换句话说:

"ConfigureIterator": {
    "Type": "Pass",
    "Parameters": {
        "index": -1,
        "step": 1,
        "count.$": "$.files.count"
    },
    "ResultPath": "$.iterator",
    "Next": "Iterator"
}