使用 Step Functions API 操作继续新的执行(推荐) - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Step Functions API 操作继续新的执行(推荐)

Step Functions 可以通过调用自己的 API 以作为集成服务来启动工作流执行。我们建议您使用这种方法来避免长时间运行的执行超出服务限额。

第 1 步:创建一个长时间运行的状态机

创建一个长时间运行的状态机,您希望该状态机从另一个状态机的 Task 状态开始。在本教程中,将使用使用 Lambda 函数的状态机

注意

请务必将此状态机的名称和 Amazon 资源名称复制到文本文件中以备稍后使用。

第 2 步:创建状态机以调用 Step Functions API 操作

从一个 Task 状态启动工作流执行
  1. 打开 Step Functions 控制台,然后选择创建状态机

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

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

  4. 操作选项卡中,将 StartExecution API 操作拖放到标有将第一个状态拖至此处的空白状态处。

  5. 选择 StartExecution 状态,然后在设计模式配置选项卡中执行以下操作:

    1. 将状态重命名为 Start nested execution

    2. 对于集成类型,从下拉列表中选择 Amazon 开发工具包 - 新建

    3. API 参数 中,执行以下操作:

      1. 对于 StateMachineArn,请将示例 Amazon 资源名称替换为您的状态机 ARN。例如,输入使用 Lambda 的状态机的 ARN。

      2. 对于 Input 节点,将现有占位符文本替换为以下值:

        "Comment": "Starting workflow execution using a Step Functions API action"
      3. 确保 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" }
  6. (可选)在 Inspector 面板上选择定义,查看工作流中自动生成的 Amazon States Language (ASL) 定义。

    提示

    您也可以在 Workflow Studio 的代码编辑器中查看 ASL 的定义。在代码编辑器中,还可以编辑工作流的 ASL 定义。

  7. 为状态机指定一个名称。要执行此操作,请选择默认状态机名称 MyStateMachine 旁边的编辑图标。然后,找到状态机配置,在状态机名称框中指定一个名称。

    对于本教程,请输入名称 ParentStateMachine

  8. (可选)在状态机配置中,指定其他工作流设置,例如状态机类型及其执行角色。

    在本教程中,请保留状态机设置中的所有默认选项。

    如果您之前为状态机创建了具有正确权限的 IAM 角色并想使用该角色,请在权限中选择选择现有角色,然后从列表中选择一个角色。或者选择输入角色 ARN,然后为该 IAM 角色的 ARN 获取该角色。

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

    您也可以选择查看角色设置,返回至状态机配置

    注意

    如果您删除了 Step Functions 创建的 IAM 角色,Step Functions 在以后无法重新创建该角色。同样,如果您修改了该角色(例如,通过在 IAM 策略中从主体中删除 Step Functions),Step Functions 在以后也无法还原其原始设置。

第 3 步:更新 IAM 策略

要确保您的状态机有权限启动使用 Lambda 函数的状态机执行,您需要将内联策略附加到状态机的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的嵌入内联策略

  1. ParentStateMachine 页面上,选择 IAM 角色 ARN,导航到状态机的 IAM 角色页面。

  2. ParentStateMachine 的 IAM 角色分配适当的权限,使其能够启动另一台状态机的执行。要添加该权限,请执行以下操作:

    1. 在 IAM 角色页面上,选择添加权限,然后选择创建内联策略

    2. 创建策略页面上,选择 JSON 选项卡。

    3. 使用以下策略替换现有文本:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:us-east-2:123456789012:stateMachine:LambdaStateMachine" ] } ] }
    4. 选择查看策略

    5. 指定策略名称,然后选择创建策略

第 4 步:运行状态机

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

  1. ParentStateMachine 页面上,选择启动执行

    随即显示启动执行对话框。

  2. 启动执行对话框中,执行以下操作:

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

      注意

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

    2. (可选)在输入框中,以 JSON 格式输入输入值以便运行工作流。

    3. 选择启动执行

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

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

  3. 打开 LambdaStateMachine 页面,注意由 ParentStateMachine 触发的新执行。