Amazon web services AWS StepFunctions-每个地图项目内的结果路径
我有一个设置,需要遍历某个数组,并对数组中的每个项执行几个步骤 这些将在每个项目上执行的步骤相互依赖,主要是lambda调用/任务 当然,映射状态最适合用例。但是我想知道如果我为迭代器中的每个步骤定义一个Amazon web services AWS StepFunctions-每个地图项目内的结果路径,amazon-web-services,Amazon Web Services,我有一个设置,需要遍历某个数组,并对数组中的每个项执行几个步骤 这些将在每个项目上执行的步骤相互依赖,主要是lambda调用/任务 当然,映射状态最适合用例。但是我想知道如果我为迭代器中的每个步骤定义一个ResultPath,会发生什么。当这些项目被并行处理或被处理时,它会相互冲突吗 假设在下面的示例中,我有一个用于验证$的ResultPath。validateResult。在这个上下文中,$是指迭代器内的上下文,是指每个对象,还是仍然指全局对象,并且我的所有迭代都在同一个位置写入?例如,如果我
ResultPath
,会发生什么。当这些项目被并行处理或被处理时,它会相互冲突吗
假设在下面的示例中,我有一个用于验证$的ResultPath
。validateResult
。在这个上下文中,$是指迭代器内的上下文,是指每个对象,还是仍然指全局对象,并且我的所有迭代都在同一个位置写入?例如,如果我在validateResult
之后有另一个步骤需要使用此数据,它是否能够可靠地访问此迭代中上一个步骤的结果,或者我的ResultPath
是否会在不同迭代之间发生冲突,因为映射状态同时工作
希望我能解释清楚
"Validate-All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemsPath": "$.shipped",
"MaxConcurrency": 0,
"Iterator": {
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val",
"End": true
"ResultPath": "$.validateResult"
}
}
},
"ResultPath": "$.detail.shipped",
"End": true
}
映射迭代器中的ResultPath仅属于映射中的任务。它不会在迭代过程中或与原始输入混淆 这是一张地图样本
{
"StartAt":"Dummy Step 1 Output",
"States":{
"Dummy Step 1 Output":{
"Type":"Pass",
"Result":[
{
"iter":1
},
{
"iter":2
}
],
"ResultPath":"$.inputForMap",
"Next":"loop on map"
},
"loop on map":{
"Type":"Map",
"ResultPath":"$.mapOutput",
"Next":"Step three",
"Iterator":{
"StartAt":"Step 2 - Looping on map",
"States":{
"Step 2 - Looping on map":{
"Type":"Pass",
"Result":{
"outputOfStepWithInMap":"This is output of step within map"
},
"ResultPath":"$.validateResult",
"End":true
}
}
},
"ItemsPath":"$.inputForMap",
"MaxConcurrency":1
},
"Step three":{
"Type":"Pass",
"Next":"End of Step Function"
},
"End of Step Function":{
"Type":"Pass",
"End":true
}
}
}
映射步骤输入:
{
"Comment": "Insert your JSON here",
"inputForMap": [
{
"iter": 1
},
{
"iter": 2
}
]
}
映射步骤输出:
{
"Comment": "Insert your JSON here",
"inputForMap": [
{
"iter": 1
},
{
"iter": 2
}
],
"mapOutput": [
{
"iter": 1,
"validateResult": {
"outputOfStepWithInMap": "This is output of step within map"
}
},
{
"iter": 2,
"validateResult": {
"outputOfStepWithInMap": "This is output of step within map"
}
}
]
}
如果我们注意到地图输出数组的每个元素中都存在
validateResult
。我取了一个,并为此用例进行了更新。感谢您的确认。