在AWS步骤函数中,我需要运行一个for循环。传递for循环的特定元素+loop.im的所有元素的一些公共信息。im通过输入获取公共信息。但问题是,当我尝试将参数设置为 $.something 时,它只显示循环的特定元素作为输入。不显示父输入。
这是一个例子。
{
"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 中的项目)。再次将其设置为数据。 以及从输入中获取的工作信息。仅此而已。
您可以参考以下链接以获取更多了解。