从 Task 状态启动工作流执行 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

从 Task 状态启动工作流执行

Amazon Step Functions 可以直接从状态机的 Task 状态启动工作流程执行。这允许您将工作流程分解为较小的状态机,并开始执行这些其他状态机。通过启动这些新的工作流程执行,您可以:

  • 将更高级别的工作流程与较低级别的特定于任务的工作流程分开。

  • 通过多次调用单独的状态机来避免重复元素。

  • 创建模块化可重用工作流程库以加快开发速度。

  • 降低复杂性并使编辑状态机和排除其故障变得更容易。

Step Functions 可以通过调用自己的 API 以作为集成服务来启动这些工作流执行。只需从 Task 状态调用 StartExecution API 操作并传递必要的参数即可。您可以使用任何服务集成模式调用 Step Functions API。

提示

要将嵌套工作流的示例部署到您的 Amazon Web Services 账户,请参阅模块 13 - 嵌套快速工作流

要启动新的状态机执行,请使用类似于以下示例的 Task 状态:

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input":{ "Comment":"Hello world!" }, }, "Retry":[ { "ErrorEquals":[ "StepFunctions.ExecutionLimitExceeded" ] } ], "End":true }

Task 状态会启动新的 HelloWorld 状态机执行,并传递 JSON 注释作为输入。

注意

StartExecution API 操作配额可以限制您可以启动的执行次数。对 StepFunctions.ExecutionLimitExceeded 使用 Retry 以确保启动您的执行。请参阅以下内容。

关联工作流程执行

要将已启动的工作流程执行与启动它的执行相关联,请将执行 ID 从上下文对象传递到执行输入。您可以在正在运行的执行中从您的 Task 状态访问上下文对象中的 ID。通过将 .$ 附加到参数名称并在上下文对象中通过 $$.Execution.Id 引用 ID 来传递执行 ID。

"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"

在启动执行时,您可以使用名为 AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID 的特殊参数。如果包含此关联,则会在 Step Functions 控制台的步骤详细信息部分提供链接。当提供后,您可以轻松跟踪工作流程的执行情况(从正在启动的执行到已启动的工作流程执行)。使用前面的示例,将执行 ID 与 HelloWorld 状态机的已启动执行相关联,如下所示。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input": { "Comment": "Hello world!", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "End":true }

有关更多信息,请参阅下列内容: