本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Step Functions 中从任务状态开始执行工作流程
AWS Step Functions 可以直接从Task
状态机的状态启动工作流程执行。这允许您将工作流程分解为较小的状态机,并开始执行这些其他状态机。通过启动这些新的工作流程执行,您可以:
-
将更高级别的工作流程与较低级别的特定于任务的工作流程分开。
-
通过多次调用单独的状态机来避免重复元素。
-
创建模块化可重用工作流程库以加快开发速度。
-
降低复杂性并使编辑状态机和排除其故障变得更容易。
Step Function API s 可以通过调用自己的集成服务来启动这些工作流程执行。只需从您所在的Task
州调用StartExecution
API操作并传递必要的参数即可。您可以使用任何服务集成模式调用 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注释作为输入传递。
注意
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
}
有关更多信息,请参阅下列内容: