从另一个分支访问AWS Step函数中并行块内的阶段

问题描述

enter image description here

如图所示,我已经创建了一个步进功能。现在,我需要在StepK之后执行StepX(然后ChoiceA流程将结束)。因此,基本上,StepX应该与StepY-> StepZ并行执行,但现在也要在StepK之后执行。但是我找不到访问并行块内部舞台的方法。“有没有解决的办法?

这是我的杰森-

{
  "StartAt": "DataPointsExtractor","States": {
    "DataPointsExtractor": {
      "Type": "Task","Resource": "arn:aws:lambda:*******","Next": "PathDecider"
    },"PathDecider": {
      "Type": "Choice","Choices": [
        {
          "Variable": "$.path_type","StringEquals": "ChoiceA","Next": "ChoiceA"
        },{
          "Variable": "$.path_type","StringEquals": "ChoiceB","Next": "ChoiceB"
        }
      ],"Default": "NoMatchesstate"
    },"ChoiceA": {
      "Type": "Task","Next": "StepK"
    },"StepK": {
      "Type": "Task","End": true
    },"ChoiceB": {
      "Type": "Task","Next": "ParallelStates"
    },"ParallelStates": {
      "Type": "Parallel","Branches": [
        {
          "StartAt": "StepX","States": {
            "StepX": {
              "Type": "Task","End": true
            }
          }
        },{
          "StartAt": "StepY","States": {
            "StepY": {
              "Type": "Task","Next": "StepZ"
            },"StepZ": {
              "Type": "Task","End": true
            }
          }
        }
      ],"NoMatchesstate": {
      "Type": "Fail","Cause": "No Matches!"
    }
  }
}

解决方法

您应该保持简单。由于ChoiceA和ChoiceB是独立的流程,因此它们不需要相交。 StepX可以使用两次(不过您必须使用其他名称)

enter image description here

定义:

{
  "StartAt": "DataPointsExtractor","States": {
    "DataPointsExtractor": {
      "Type": "Task","Resource": "arn:aws:lambda:*******","Next": "PathDecider"
    },"PathDecider": {
      "Type": "Choice","Choices": [
        {
          "Variable": "$.path_type","StringEquals": "ChoiceA","Next": "ChoiceA"
        },{
          "Variable": "$.path_type","StringEquals": "ChoiceB","Next": "ChoiceB"
        }
      ],"Default": "NoMatchesState"
    },"ChoiceA": {
      "Type": "Task","Next": "StepK"
    },"StepK": {
      "Type": "Task","Next": "StepX"
    },"StepX": {
      "Type": "Task","End": true
    },"ChoiceB": {
      "Type": "Task","Next": "ParallelStates"
    },"ParallelStates": {
      "Type": "Parallel","Branches": [
        {
          "StartAt": "StepX","States": {
            "StepX": {
              "Type": "Task","End": true
            }
          }
        },{
          "StartAt": "StepY","States": {
            "StepY": {
              "Type": "Task","Next": "StepZ"
            },"StepZ": {
              "Type": "Task","End": true
            }
          }
        }
      ],"NoMatchesState": {
      "Type": "Fail","Cause": "No Matches!"
    }
  }
}