教程:学习使用 Amazon Step Functions Workflow Studio - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:学习使用 Amazon Step Functions Workflow Studio

在本教程中,您将学习使用 Amazon Step Functions Workflow Studio 的基础知识。在 Workflow Studio 的设计模式中,您将创建一个包含多个状态的状态机,包括PassChoiceFailWaitParallel。您将使用拖放特征来搜索、选择和配置这些状态。然后,您将查看工作流自动生成的 Amazon States Language (ASL) 定义。您还将使用 Workflow Studio 的代码模式来编辑工作流定义。然后,您将退出 Workflow Studio,运行状态机并查看执行详细信息。

在本教程中,您还将学习如何更新状态机以及如何查看执行输出中的更改。最后,您将执行清理步骤并删除状态机。

完成本教程后,您将知道如何使用 Workflow Studio 在设计代码模式下创建和配置工作流程。您还将知道如何更新、运行和删除状态机。

注意

在开始本教程之前,请确保完成本教程的先决条件

第 1 步:导航到 Workflow Studio

  1. 打开 Step Functions 控制台,然后选择创建状态机

  2. 选择模板对话框中,选择空白

  3. 选择选择。这将在设计模式中打开 Workflow Studio。

第 2 步:创建状态机

在 Workflow Studio 中,状态机是工作流的一种图形化表示。使用 Workflow Studio,您可以定义、配置和检查工作流的各个步骤。在以下步骤中,您将使用 Workflow Studio 的设计模式创建状态机。

创建状态机
  1. 确保处于 Workflow Studio 的设计模式。

  2. 从左侧状态浏览器中选择选项卡。然后,将一个 Pass 状态拖到标有将第一个状态拖至此处的空白状态处。

  3. 选项卡将一个 Choice 状态拖放到 Pass 状态下方。

  4. 状态名称中,替换 Choice 默认名称。在本教程中,请使用名称 IsHelloWorldExample

  5. 将另一个 Pass 状态拖放到该IsHelloWorldExample状态的一个分支上。然后,将失败状态拖放到该IsHelloWorldExample状态的另一个分支下方。

  6. 选择 Pass (1) 状态,并将其重命名为 Yes。将 Fail 状态重命名为 No

  7. 使用布尔变量IsHelloWorldExample指定IsHelloWorldExample状态的分支逻辑。

    如果 IsHelloWorldExampleFalse,则工作流将进入 No 状态。否则,工作流将在 Yes 状态下继续其执行流程。

    要定义分支逻辑,请执行以下操作:

    1. 在上选择IsHelloWorldExample状态画布,然后在 “选择规则” 下,选择规则 #1” 框中的编辑图标来定义首选规则。

    2. 选择添加条件

    3. 规则 #1 的条件对话框中,在变量下输入 $.IsHelloWorldExample

    4. 运算符下选择等于。

    5. 下选择布尔常数,然后从下拉列表中选择 true

    6. 选择保存条件

    7. 确保在然后下一个状态为:下拉列表中选择 Yes

    8. 选择添加新选择规则,然后选择添加条件

    9. 规则 #2 框中,通过重复子步骤 7.c 到 7.f 来定义 IsHelloWorldExample 变量值为 false 时的第二个选择规则。对于步骤 7.e,请选择 false 而非 true

    10. 规则 #2 框中,从然后下一个状态为:下拉列表中选择 No

    11. 默认规则框中,选择编辑图标定义默认选择规则,然后从下拉列表中选择 Yes

  8. Yes 状态之后添加一个 Wait 状态,并将其命名 Wait 3 sec。然后,通过执行以下步骤将等待时间配置为三秒:

    1. 选项下,保留默认选择等待固定的时间间隔

    2. 下,确保选中输入秒,然后在框中输入 3

  9. Wait 3 sec 状态后,添加一个 Parallel 状态。在其两个分支中添加两个 Pass 状态。命名第一个 Pass 状态为 Hello。命名第二个 Pass 状态为 World

    完成的工作流将如下所示:

    IsHelloWorldExample 状态机已完成的工作流。

第 3 步:查看自动生成的 Amazon States Language 定义

当您将状态从选项卡拖放到画布上时,Workflow Studio 会自动实时撰写工作流的 Amazon States Language (ASL) 定义。在 Inspector 面板中,选择定义切换按钮查看此定义,或切换到代码模式,根据需要编辑此定义。有关编辑工作流定义的信息,请参阅本教程的di's第 4 步

  • (可选)在 Inspector 面板上选择定义,然后查看状态机的工作流。

    以下示例代码显示了 IsHelloWorldExample 状态机自动生成的 Amazon States Language 定义。您在 Workflow Studio 中添加的 Choice 状态用于根据您在第 2 步中定义的分支逻辑来确定执行流程。

    { "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "IsHelloWorldExample", "Comment": "A Pass state passes its input to its output, without performing work. Pass states are useful when constructing and debugging state machines." }, "IsHelloWorldExample": { "Type": "Choice", "Comment": "A Choice state adds branching logic to a state machine. Choice rules can implement 16 different comparison operators, and can be combined using And, Or, and Not\"", "Choices": [ { "Variable": "$.IsHelloWorldExample", "BooleanEquals": false, "Next": "No" }, { "Variable": "$.IsHelloWorldExample", "BooleanEquals": true, "Next": "Yes" } ], "Default": "Yes" }, "No": { "Type": "Fail", "Cause": "Not Hello World" }, "Yes": { "Type": "Pass", "Next": "Wait 3 sec" }, "Wait 3 sec": { "Type": "Wait", "Seconds": 3, "Next": "Parallel" }, "Parallel": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "End": true } } } ] } } }

第 4 步:在“代码”模式下编辑工作流定义

Workflow Studio 的代码模式提供了一个集成的代码编辑器,用于查看和编辑工作流的 ASL 定义。

  1. 选择代码,切换到代码模式。

  2. Parallel状态的定义后,放置光标并按 Enter 键。

  3. 按下 Ctrl+space 可查看可在 Parallel 状态之后添加的状态列表。

  4. 从选项列表中选择 Pass 状态。代码编辑器为 Pass 状态添加样板代码。

  5. 添加此状态会导致您的工作流定义出现错误。在 Parallel 状态的定义中,替换 "End": true"Next": "PassState"

  6. 在您添加的 Pass 状态定义中,进行以下更改:

    1. 删除结果节点。

    2. 删除 "ResultPath": "$.result","Next": "NextState"

    3. "Type": "Pass", 后面,输入 "End": true

    4. Pass 状态定义之后添加一个 ,

现在,您的工作流定义应类似于以下定义。

{ "Comment": "A description of my state machine", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "IsHelloWorldExample" }, "IsHelloWorldExample": { "Type": "Choice", "Choices": [ { "Variable": "$.IsHelloWorldExample", "BooleanEquals": true, "Next": "Yes" }, { "Variable": "$.IsHelloWorldExample", "BooleanEquals": false, "Next": "No" } ], "Default": "Yes" }, "Yes": { "Type": "Pass", "Next": "Wait 3 seconds" }, "Wait 3 seconds": { "Type": "Wait", "Seconds": 3, "Next": "Parallel" }, "Parallel": { "Type": "Parallel", "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "End": true } } } ], "Next": "PassState" }, "PassState": { "Type": "Pass", "End": true }, "No": { "Type": "Fail" } } }

第 5 步:保存状态机

  1. 选择 Config more 或选择默认状态机名称旁边的编辑图标MyStateMachine。在状态机配置中,指定一个名称。例如,输入 HelloWorld

  2. (可选)指定其他工作流设置,例如状态机类型及其执行角色。在本教程中,请保留状态机配置中的所有默认选项。

  3. 选择创建

  4. 确认角色创建对话框中,选择确认继续。

    您也可以选择查看角色配置,返回配置 模式。

有关配置模式的更多信息,请参阅 Workflow Studio 的配置模式

第 6 步:运行状态机

状态机执行是指运行工作流执行任务的实例。

  1. 状态机页面上,选择HelloWorld状态机。

  2. HelloWorld页面上,选择开始执行

  3. (可选)要识别您的执行,您可以在名称框中为其指定一个名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。

    注意

    Step Functions 允许您为状态机、执行和活动创建名称,以及包含非 ASCII 字符的标签。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。

  4. 输入框中,以 JSON 格式输入执行的输入值。根据您的输入,IsHelloWorldExample 变量决定将执行哪个状态机流程。现在,请使用以下输入值:

    { "IsHelloWorldExample": true }
    注意

    虽然指定执行输入是可选操作,但在本教程中,必须指定与上述示例输入类似的执行输入。运行状态机时,该输入值将在 Choice 状态中被引用。

  5. 选择启动执行

  6. Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。

    要查看执行结果,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅“执行详细信息”页面 – 界面概述

    在本教程中,如果您输入的输入值为 "IsHelloWorldExample": true,则应看到以下输出:

    { "IsHelloWorldExample": true }, { "IsHelloWorldExample": true }

第 7 步:更新状态机

更新状态机时,更新内容最终会保持一致。短时间后,所有新启动的执行都将反映状态机更新后的定义。所有当前正在运行的执行将在先前的定义下运行完成。

在此步骤中,您将在 Workflow Studio 的设计模式下更新状态机。您将在名为 WorldPass 状态中添加一个 Result 字段。

  1. 在标题为您的执行 ID 的页面上,选择 编辑状态机

  2. 确保您处于设计模式。

  3. 在画布上选择名为 WorldPass 状态,然后选择输出

  4. 结果框中输入 "World has been updated!"

  5. 选择保存

  6. (可选)在定义区域,查看工作流中更新的 Amazon States Language 定义。

    { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "Result": "World has been updated!", "End": true } } } ], "Next": "PassState" }
  7. 选择执行

  8. 在新选项卡中打开的启动执行对话框中,提供以下执行输入。

    { "IsHelloWorldExample": true }
  9. 选择启动执行

  10. (可选)在图表视图中,选择 World 步骤,然后选择输出。输出为 World has been updated!

第 8 步:清除

删除您的状态机
  1. 在导航菜单中,选择状态机

  2. 状态机页面上,选择 HelloWorld,然后选择删除

  3. 删除状态机对话框中,键入 delete 确认删除。

  4. 选择删除

    如果成功删除,则屏幕顶部会出现一个绿色的状态条。绿色状态栏通知您状态机已标记为删除。当状态机中所有正在进行的执行都停止运行时,状态机将被删除。

删除执行角色
  1. 打开 IAM 的角色页面

  2. 选择 Step Functions 为您创建的 IAM 角色。例如,StepFunctionsHelloWorld-角色示例。

  3. 选择删除角色

  4. 选择是,删除