在 Step Functions 中从任务状态开始执行工作流程 - AWS Step Functions

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

在 Step Functions 中从任务状态开始执行工作流程

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

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

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

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

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

Step Function API s 可以通过调用自己的集成服务来启动这些工作流程执行。只需从您所在的Task州调用StartExecutionAPI操作并传递必要的参数即可。您可以使用任何服务集成模式调用 St API ep Functions。

提示

将嵌套工作流程的示例部署到您的 AWS 账户,请参阅模块 13-嵌套的 Express 工作流程

要启动新的状态机执行,请使用类似于以下示例的 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注释作为输入传递。

注意

StartExecutionAPI操作配额可以限制您可以启动的执行次数。对 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 }

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