本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Step Functions 中使用内联 Map 状态重复操作
本教程可帮助您开始在内联模式中使用 Map 状态。您可以在工作流中使用内联 Map 状态来重复执行操作。有关内联模式的更多信息,请参阅内联模式下的 Map 状态。
在本教程中,您将使用内联 Map 状态重复生成版本 4 的通用唯一标识符 (v4 UUID)。首先,在 Workflow Studio 中创建一个包含两个 Pass 工作流程状态 状态和一个内联 Map 状态的工作流。然后,配置输入和输出,包括 Map 状态的输入 JSON 数组。该Map状态返回一个输出数组,其中包含为输入数组中的每个项目 UUIDs 生成的 v4。
第 1 步:创建工作流原型
在此步骤中,您将使用 Workflow Studio 为工作流创建原型。Workflow Studio 是一款可视化工作流设计器,可在 Step Functions 控制台中使用。您将从流选项卡中选择所需的状态,然后使用 Workflow Studio 的拖放特征来创建工作流原型。
- 打开 Step Functions 控制台 - ,从菜单中选择状态机,然后选择创建状态机。 
- 选择 “从空白处创建”。 
- 
                为状态机命名,然后选择 “继续”,在 Workflow Studio 中编辑状态机。 
- 从流选项卡中,将 Pass 状态拖放到标有将第一个状态拖至此处的空白状态处。 
- 将 Map 状态拖放到 Pass 状态下方。将 Map 状态重命名为 - Map demo。
- 将第二个 Pass 状态拖放到 Map demo 状态内。 
- 将第二个 Pass 状态重命名为 - Generate UUID。
第 2 步:配置输入和输出
在此步骤中,您将为工作流原型中的所有状态配置输入和输出。首先,使用第一个 Pass 状态将一些固定数据注入工作流。此 Pass 状态将这些数据作为输入传递给 Map demo 状态。在此输入中,您将指定包含 Map demo 状态应迭代的输入数组的节点。然后定义地图演示状态应重复的步骤以生成 v4 UUIDs。最后,配置输出,用于在每次重复时返回。
- 在工作流原型中选择第一个 Pass 状态。在输出选项卡中,在结果下输入以下内容: - { "foo": "bar", "colors": [ "red", "green", "blue", "yellow", "white" ] }
- 选择 Map demo 状态,然后在配置选项卡中执行以下操作: - 选择提供项目数组的路径。 
- 指定以下参考路径,用于选择包含输入数组的节点: - $.colors
 
- 选择 Generate UUID 状态,然后在输入选项卡中执行以下操作: - 选择使用参数转换输入。 
- 输入以下 JSON 输入, UUIDs 为每个输入数组项生成 v4。您可以使用 - States.UUID内部函数生成。 UUIDs- { "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 字符的名称。由于此类字符会 CloudWatch 阻止亚马逊记录数据,因此我们建议您仅使用 ASCII 字符,这样您就可以跟踪 Step Functions 的指标。 
- 
            (可选)在输入框中,以 JSON 格式输入输入值以便运行工作流。 
- 
            选择启动执行。 
- 
           Step Functions 控制台将您引导至标有您的执行 ID 的页面,即执行详情页面。您可以随着工作流程的进展和完成后查看执行结果。 要查看执行结果,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息概览。 
 要查看执行输入和输出 side-by-side,请选择执行输入和输出。在输出下,查看 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" ]
-