本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Step Functions 中使用内联 Map 状态重复操作
本教程可帮助您开始在内联模式中使用 Map
状态。您可以在工作流中使用内联 Map 状态来重复执行操作。有关内联模式的更多信息,请参阅内联模式下的 Map 状态。
在本教程中,您将使用内联 Map 状态重复生成版本 4 的通用唯一标识符 (v4 UUID)。首先,在 Workflow Studio 中创建一个包含两个 Pass 工作流程状态 状态和一个内联 Map 状态的工作流。然后,配置输入和输出,包括 Map
状态的输入 JSON 数组。Map
状态会返回一个输出数组,其中包含为输入数组中的每个项目生成的 v4 UUID。
第 1 步:创建工作流原型
在此步骤中,您将使用 Workflow Studio 为工作流创建原型。Workflow Studio 是一款可视化工作流设计器,可在 Step Functions 控制台中使用。您将从流选项卡中选择所需的状态,然后使用 Workflow Studio 的拖放特征来创建工作流原型。
打开 Step Functions 控制台
,然后选择创建状态机。 在 选择模板对话框中,选择空白。
-
选择选择,以便在设计模式下打开工作流程工作室。
从流选项卡中,将 Pass 状态拖放到标有将第一个状态拖至此处的空白状态处。
将 Map 状态拖放到 Pass 状态下方。将 Map 状态重命名为
Map demo
。将第二个 Pass 状态拖放到 Map demo 状态内。
将第二个 Pass 状态重命名为
Generate UUID
。
第 2 步:配置输入和输出
在此步骤中,您将为工作流原型中的所有状态配置输入和输出。首先,使用第一个 Pass 状态将一些固定数据注入工作流。此 Pass 状态将这些数据作为输入传递给 Map demo 状态。在此输入中,您将指定包含 Map demo 状态应迭代的输入数组的节点。然后定义 Map demo 状态应重复的步骤,用于生成 v4 UUID。最后,配置输出,用于在每次重复时返回。
在工作流原型中选择第一个 Pass 状态。在输出选项卡中,在结果下输入以下内容:
{ "foo": "bar", "colors": [ "red", "green", "blue", "yellow", "white" ] }
选择 Map demo 状态,然后在配置选项卡中执行以下操作:
选择提供项目数组的路径。
指定以下参考路径,用于选择包含输入数组的节点:
$.colors
选择 Generate UUID 状态,然后在输入选项卡中执行以下操作:
选择使用参数转换输入。
输入以下 JSON 输入,为每个输入数组项目生成 v4 UUID。您可以使用
States.UUID
内置函数生成 UUID。{ "uuid.$": "States.UUID()" }
对于 Generate UUID 状态,选择输出选项卡并执行以下操作:
选择使用 OutputPath 筛选输出。
输入以下参考路径,选择包含输出数组项目的 JSON 节点:
$.uuid
步骤 3:查看并保存自动生成的定义
当您将状态从流面板拖放到画布上时,Workflow Studio 会自动实时撰写工作流的 Amazon States Language (ASL) 定义。您可以根据需要编辑此定义。
-
(可选)在 检查器面板 面板上选择定义,查看工作流中自动生成的 Amazon States Language 定义。
提示
您也可以在 Workflow Studio 的代码编辑器中查看 ASL 的定义。在代码编辑器中,还可以编辑工作流的 ASL 定义。
以下示例显示了为您的工作流自动生成的 Amazon States Language定义。
{ "Comment": "Using Map state in Inline mode", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "Map demo", "Result": { "foo": "bar", "colors": [ "red", "green", "blue", "yellow", "white" ] } }, "Map demo": { "Type": "Map", "ItemsPath": "$.colors", "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "Generate UUID", "States": { "Generate UUID": { "Type": "Pass", "End": true, "Parameters": { "uuid.$": "States.UUID()" }, "OutputPath": "$.uuid" } } }, "End": true } } }
-
为状态机指定一个名称。要执行此操作,请选择默认状态机名称 MyStateMachine 旁边的编辑图标。然后,找到状态机配置,在状态机名称框中指定一个名称。
对于本教程,请输入名称
InlineMapDemo
。 -
(可选)在状态机配置中,指定其他工作流设置,例如状态机类型及其执行角色。
在本教程中,请保留状态机配置中的所有默认选项。
-
在确认角色创建对话框中,选择确认继续。
您也可以选择查看角色设置,返回至状态机配置。
注意
如果您删除了 Step Functions 创建的 IAM 角色,Step Functions 在以后无法重新创建该角色。同样,如果您修改了该角色(例如,通过在 IAM 策略中从主体中删除 Step Functions),Step Functions 在以后也无法还原其原始设置。
第 4 步:运行状态机
状态机执行是指运行工作流执行任务的实例。
-
在 InlineMapDemo 页面上,选择启动执行。
-
在启动执行对话框中,执行以下操作:
-
(可选)输入自定义执行名称,以便覆盖生成的默认执行名称。
非 ASCII 名称和日志记录
Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符不适用于 Amazon CloudWatch,因此我们建议您仅使用 ASCII 字符,这样您就可以在 CloudWatch 中跟踪指标。
-
(可选)在输入框中,以 JSON 格式输入输入值以便运行工作流。
-
选择启动执行。
-
Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。
要查看执行结果,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息概览。
要并排查看执行输入和输出,请选择执行输入和输出。在输出下,查看
Map
状态返回的输出数组。下面是输出数组的一个示例:[ "a85cbc7b-4e65-4ac2-97af-80ed504adc1d", "b05bca11-d481-414e-aa9a-88285ec6590d", "f42d59f7-bd32-480f-b270-caddb518ce2a", "15f18616-517d-4b69-b7c3-bf22222d2efd", "690bcfee-6d58-408c-a6b4-1995ccafdbd2" ]
-