本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Step Functions API 操作继续新的执行(推荐)
Step Functions 可以通过调用自己的 API 以作为集成服务来启动工作流执行。我们建议您使用这种方法来避免长时间运行的执行超出服务限额。
第 1 步:创建一个长时间运行的状态机
创建一个长时间运行的状态机,您希望该状态机从另一个状态机的 Task
状态开始。在本教程中,将使用使用 Lambda 函数的状态机。
注意
请务必将此状态机的名称和 Amazon 资源名称复制到文本文件中以备稍后使用。
第 2 步:创建状态机以调用 Step Functions API 操作
从一个 Task
状态启动工作流执行
-
打开 Step Functions 控制台
,然后选择创建状态机。 -
在 选择模板对话框中,选择空白。
-
选择选择。这将在设计模式中打开 Workflow Studio。
-
从 “操作” 选项卡中,将 StartExecutionAPI 操作拖放到标有 “将第一个状态拖到此处” 的空白状态。
-
选择StartExecution状态并在的 “配置” 选项卡中执行以下操作设计模式:
-
将状态重命名为
Start nested execution
。 -
对于集成类型,从下拉列表中选择 Amazon 开发工具包 - 新建。
-
在 API 参数 中,执行以下操作:
-
对于
StateMachineArn
,请将示例 Amazon 资源名称替换为您的状态机 ARN。例如,输入使用 Lambda 的状态机的 ARN。 -
对于
Input
节点,将现有占位符文本替换为以下值:"Comment": "Starting workflow execution using a Step Functions API action"
-
确保 API 参数中的输入类似于以下内容:
{ "StateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:
LambdaStateMachine
", "Input": { "Comment": "Starting workflow execution using a Step Functions API action", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }
-
-
-
(可选)在 Inspector 面板上选择定义,查看工作流中自动生成的 Amazon States Language (ASL) 定义。
提示
您也可以在 Workflow Studio 的代码编辑器中查看 ASL 的定义。在代码编辑器中,还可以编辑工作流的 ASL 定义。
-
为状态机指定一个名称。为此,请选择默认状态机名称旁边的编辑图标MyStateMachine。然后,找到状态机配置,在状态机名称框中指定一个名称。
对于本教程,请输入名称
ParentStateMachine
。 -
(可选)在状态机配置中,指定其他工作流设置,例如状态机类型及其执行角色。
在本教程中,请保留状态机设置中的所有默认选项。
如果您之前为状态机创建了具有正确权限的 IAM 角色并想使用该角色,请在权限中选择选择现有角色,然后从列表中选择一个角色。或者选择输入角色 ARN,然后为该 IAM 角色的 ARN 获取该角色。
-
在确认角色创建对话框中,选择确认继续。
您也可以选择查看角色设置,返回至状态机配置。
注意
如果您删除了 Step Functions 创建的 IAM 角色,Step Functions 在以后无法重新创建该角色。同样,如果您修改了该角色(例如,通过在 IAM 策略中从主体中删除 Step Functions),Step Functions 在以后也无法还原其原始设置。
第 3 步:更新 IAM 策略
要确保您的状态机有权限启动使用 Lambda 函数的状态机执行,您需要将内联策略附加到状态机的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的嵌入内联策略。
-
在该ParentStateMachine页面上,选择 IAM 角色 ARN 以导航到状态机的 IAM 角色页面。
-
为的 IAM 角色分配适当的权限,使其能够开始执行另一台状态机。ParentStateMachine要添加该权限,请执行以下操作:
-
在 IAM 角色页面上,选择添加权限,然后选择创建内联策略。
-
在创建策略页面上,选择 JSON 选项卡。
-
使用以下策略替换现有文本:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:
us-east-2
:123456789012
:stateMachine:LambdaStateMachine
" ] } ] } -
选择查看策略。
-
指定策略名称,然后选择创建策略。
-
第 4 步:运行状态机
状态机执行是指运行工作流执行任务的实例。
-
在ParentStateMachine页面上,选择开始执行。
随即显示启动执行对话框。
-
在启动执行对话框中,执行以下操作:
-
(可选)要识别您的执行,您可以在名称框中为其指定一个名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。
注意
Step Functions 允许您为状态机、执行和活动创建名称,以及包含非 ASCII 字符的标签。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。
-
(可选)在输入框中,以 JSON 格式输入输入值以便运行工作流。
-
选择启动执行。
-
Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。
要查看执行结果,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅“执行详细信息”页面 – 界面概述。
-
-
打开LambdaStateMachine页面,注意由触发的新执行ParentStateMachine。