【问题标题】:AWS step function: How to continue execution after parallel state when at least one branch is done?AWS step function:当至少一个分支完成后,如何在并行状态后继续执行?
【发布时间】:2023-02-10 07:09:08
【问题描述】:

在 AWS Step Functions 中,我有一个具有三个状态的简单状态机。 StateA 和 StateB 处于“并行”状态。 StateC 在“并行”状态之后。

默认情况下,StateC 在 StateA 和 StateB 都完成时执行。但是,我的要求是在其中一个并行分支完成时运行 StateC,而无需等待另一个分支。

以下是状态机的 ASL 代码。帐号用 * 屏蔽

{
  "Comment": "Parellel state test",
  "StartAt": "Parallel",
  "States": {
    "Parallel": {
      "Type": "Parallel",
      "Branches": [
        {
          "StartAt": "StateA",
          "States": {
            "StateA": {
              "Type": "Pass",
              "End": true
            }
          }
        },
        {
          "StartAt": "StateB",
          "States": {
            "StateB": {
              "Type": "Task",
              "Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken",
              "Parameters": {
                "Payload": { 
                  "token.$": "$$.Task.Token"
                },
                "FunctionName": "arn:aws:lambda:eu-west-1:************:function:rere-sleep-five-seconds:$LATEST"
              },              
              "End": true
            }
          }
        }
      ],
      "Next": "StateC"
    },
    "StateC": {
      "Type": "Pass",
      "End": true
    }
  }
}

从下图中可以看出。由于 StateB 的失败,StateC 永远不会执行。当任一并行分支完成时,如何配置 StateC 运行? Click to view State Machine execution

一些问题描述了类似的情况,但是,没有一个问题可以回答这个特定的要求。你能帮忙吗?

【问题讨论】:

    标签: amazon-web-services aws-step-functions


    【解决方案1】:

    您不能真正“本地”执行此操作,因为您必须等到并行步骤中的所有分支都完成。这类似于如果一个分支失败,整个步骤将提前退出。

    “最简单”的方法是打乱顺序,以便以某种幂等方式触发状态 C,并在并行步骤的分支末尾调用该任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      相关资源
      最近更新 更多