在Step函数中传递map中的公共参数

问题描述 投票:0回答:1

在AWS步骤函数中,我需要运行一个for循环。传递for循环的特定元素+loop.im的所有元素的一些公共信息。im通过输入获取公共信息。但问题是,当我尝试将参数设置为 $.something 时,它只显示循环的特定元素作为输入。不显示父输入。

amazon-web-services input amazon-sqs aws-step-functions
1个回答
0
投票

这是一个例子。

{
  "StartAt": "Setup Variables",
  "States": {
    "Setup Variables": {
      "Type": "Pass",
      "Parameters": {
        "JobInfo": {
          "Id.$": "$$.Execution.Name",
          "Name.$": "$$.StateMachine.Name"
        },
        "DataList": [
          1,
          2,
          3
        ]
      },
      "Next": "Iterate Data"
    },
    "Iterate Data": {
      "Type": "Map",
      "InputPath": "$",
      "ItemsPath": "$.DataList",
      "ItemSelector": {
        "data.$": "$$.Map.Item.Value",
        "JobInfo.$": "$.JobInfo"
      },
      "ItemProcessor": {
        "StartAt": "Process data",
        "States": {
          "Process data": {
            "Comment": "Step the process the data",
            "Type": "Pass",
            "End": true
          }
        },
        "ProcessorConfig": {
          "Mode": "DISTRIBUTED",
          "ExecutionType": "STANDARD"
        }
      },
      "MaxConcurrency": 1000,
      "End": true
    }
  }
}

这里我想使用映射并行处理DataList,但是我需要在每个并行步骤中使用JobInfo对象,

你需要了解Map中的InputPath、ItemsPath、ItemSelector,由于InputPath是“$”我可以从Map状态访问所有数据,但是要迭代的数据可以从ItemsPath设置。由于它是“$.DataList”,它将迭代DataList,但迭代时我还需要我的JobInfo对象,因此我们可以使用ItemSelector再次更新此迭代对象。

"data.$": "$$.Map.Item.Value"

“$$.Map.Item.Value”表示原始项目值(DataList 中的项目)。再次将其设置为数据。 以及从输入中获取的工作信息。仅此而已。

您可以参考以下链接以获取更多了解。

https://states-language.net/spec.html

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.