使用行内地图状态重复操作 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用行内地图状态重复操作

本教程可帮助您开始在内联模式下使用Map状态。您可以在工作流程中使用行内地图状态来重复执行操作。有关内联模式的更多信息,请参阅内联模式下的地图状态

在本教程中,您将使用行内映射状态重复生成版本 4 的通用唯一标识符 (v4 UUID)。首先,在 Workflow Studio 中创建一个包含两个Pass状态和一个行内映射状态的工作流。然后,配置输入和输出,包括Map状态的输入 JSON 数组。该Map状态返回一个输出数组,其中包含为输入数组中每个项目生成的 v4 UUID。

重要

目前,该Map州的内联模式仅在商业区域可用。有关在工作流程中包含Map状态的信息,请参阅映射

第 1 步:创建工作流原型

在此步骤中,您将使用 Workflow Studio 为工作流程创建原型。Workflow Studio 是一个可视化工作流程设计器,可在Step Functions 控制台中使用。您将从 Flow 选项卡中选择所需的状态,然后使用 Workflow Studio 的拖放功能来创建工作流程原型。

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

  2. “选择创作方法” 页面上,保留 “以可视方式设计工作流程” 和 “标准” 的默认选择,然后选择 “下一步”。

  3. 在 Workflo w Studio 中,从 Flow 选项卡中拖动一个通过状态并将其拖放到标有 “将第一个状态拖到此处” 的空白状态

  4. 拖动地图状态并将其放置在 Pass 状态下方。将地图状态重命名为Map demo

  5. 拖动 P ass 状态并将其放置在 Map 演示状态中。

  6. 通过状态重命名为Generate UUID

第 2 步:配置输入和输出

在此步骤中,您可以为工作流程原型中的所有状态配置输入和输出。首先,使用第一个 Pass 状态将一些固定数据注入工作流程。此 Pass 状态将这些数据作为输入传递到 Map 演示状态。在此输入中,您可以指定包含 Map 演示状态应遍历的输入数组的节点。然后定义地图演示状态应重复的步骤以生成 v4 UUID。最后,配置输出,使其在每次重复时返回。

  1. 在工作流程原型中选择第一个 Pass 状态。在 “输出” 选项卡中,在 “结果” 下输入以下内容:

    { "foo": "bar", "colors": [ "red", "green", "blue", "yellow", "white" ] }
  2. 选择 “通过” 状态,然后在 “配置” 选项卡中执行以下操作:

    1. 选择 “提供条目数组的路径”。

    2. 指定以下参考路径以选择包含输入数组的节点:

      $.colors
  3. 选择 “生成 UUID 状态”,然后在 “输入” 选项卡中执行以下操作:

    1. 选择 “使用参数转换输入”

    2. 输入以下 JSON 输入,为每个输入数组项生成 v4 UUID。您可以使用States.UUID内部函数生成 UUID。

      { "uuid.$": "States.UUID()" }
  4. 对于 “生成 UUID” 状态,选择 “输出” 选项卡并执行以下操作:

    1. 选择 “使用筛选输出” OutputPath。

    2. 输入以下参考路径以选择包含输出数组项的 JSON 节点:

      $.uuid

第 3 步:查看自动生成的亚马逊States语言定义

当您将状态从 Flow 面板拖放到画布上时,Workflow Studio 会自动实时编写工作流程的亚马逊状态语言定义。您可以根据需要编辑此定义。

  1. (可选)在Inspector面板上选择定义并查看状态机定义。

    以下示例显示了为您的工作流程自动生成的亚马逊州语言定义。

    { "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 } } }
  2. 选择 Next(下一步)

  3. 查看生成的代码页面上,查看您的工作流程的 Amazon States 语言定义。如果需要,您可以在 “定义” 下进行其他更改。

  4. 选择 Next(下一步)

  5. 输入工作流的名称。例如,输入 InlineMapDemo

  6. 保留 “指定状态机设置” 页面上的所有默认选择,然后选择 “创建状态机”。

第 4 步:开始新的执行

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

  1. InlineMapDemo页面上,选择开始执行

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

    注意

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

  3. 选择 Start execution (开始执行)

  4. Step Functions 控制台将您定向到标有您的执行 ID 的页面。在此页面上,您可以查看新执行的结果。在 “详细信息” 下,您可以查看您的执行 ARN 和状态机的执行状态。要查看执行输入和输出 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" ]