Amazon web services AWS StepFunctions-每个地图项目内的结果路径

Amazon web services AWS StepFunctions-每个地图项目内的结果路径,amazon-web-services,Amazon Web Services,我有一个设置,需要遍历某个数组,并对数组中的每个项执行几个步骤 这些将在每个项目上执行的步骤相互依赖,主要是lambda调用/任务 当然,映射状态最适合用例。但是我想知道如果我为迭代器中的每个步骤定义一个ResultPath,会发生什么。当这些项目被并行处理或被处理时,它会相互冲突吗 假设在下面的示例中,我有一个用于验证$的ResultPath。validateResult。在这个上下文中,$是指迭代器内的上下文,是指每个对象,还是仍然指全局对象,并且我的所有迭代都在同一个位置写入?例如,如果我

我有一个设置,需要遍历某个数组,并对数组中的每个项执行几个步骤

这些将在每个项目上执行的步骤相互依赖,主要是lambda调用/任务

当然,映射状态最适合用例。但是我想知道如果我为迭代器中的每个步骤定义一个
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

我取了一个,并为此用例进行了更新。感谢您的确认。