创建使用 Lambda 的 Step Functions 状态机 - AWS Step Functions

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

创建使用 Lambda 的 Step Functions 状态机

在本教程中,您将创建一个用于调用 AWS Lambda 函数的单步工作流程。 AWS Step Functions

注意

Step Functions 基于状态机和任务。在 Step Functions 中,状态机被称为工作流,这是一系列事件驱动的步骤。工作流程中的每个步骤都称为状态。例如,任务状态表示另一个 AWS 服务执行的工作单元,例如调用另一个 AWS 服务 或API。在 Step Functions 中,运行工作流程执行任务的实例称为执行

有关更多信息,请参阅:

Lambda 非常适合于 Task 状态,因为 Lambda 函数无服务器 且易于编写。你可以在 AWS Management Console 或你最喜欢的编辑器中编写代码。 AWS 处理为你的函数提供计算环境并运行它的细节。

第 1 步:创建 Lambda 函数

您的 Lambda 函数接收事件数据并返回问候语。

重要

确保您的 Lambda 函数与 AWS 区域 状态机位于同一个 AWS 账户下。

  1. 打开 Lambda 控制台,然后选择创建函数

  2. 创建函数页面上,选择从头开始创作

  3. 对于函数名称,请输入 HelloFunction

  4. 保留所有其他选项的默认选择,然后选择创建函数

  5. 创建 Lambda 函数后,复制页面右上角显示的函数的 Amazon 资源名称 (ARN)。以下是一个示例ARN:

    arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
  6. 将以下 Lambda 函数的代码复制到的 “代码源” 部分 HelloFunction页面。

    export const handler = async(event, context, callback) => { callback(null, "Hello from " + event.who + "!"); };

    此代码将使用输入数据的 who 字段组装问候语,该输入数据是由传送到您的函数的 event 对象提供的。以后当您启动新的执行时,您将为此函数添加输入数据。callback 方法将从您的函数返回组装的问候语。

  7. 选择部署

第 2 步:测试 Lambda 函数

测试您的 Lambda 函数以查看其运行情况。

  1. 选择测试

  2. 对于事件名称,输入 HelloEvent

  3. 事件JSON数据替换为以下内容。

    { "who": "AWS Step Functions" }

    "who" 条目对应于您的 Lambda 函数中的 event.who 字段,用于编写问候语。运行状态机时,您将输入相同的输入数据。

  4. 选择保存,然后选择测试

  5. 执行结果下,展开详细信息以查看测试结果。

第 3 步:创建状态机

使用 Step Functions 控制台创建状态机,用于调用您在第 1 步中创建的 Lambda 函数。

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

    重要

    确保您的状态机与您之前创建的 Lambda 函数位于相同的 AWS 账户和区域下。

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

  3. 选择 “选择” 以在中打开 “工作流工作室” 设计模式

  4. 在左侧的状态浏览器中,确保已选择操作选项卡。然后,将 Invoke 拖放AWS Lambda API到标有 “在此处拖动第一个状态” 的空白状态

  5. 在右侧的 Inspector 面板中,配置 Lambda 函数:

    1. API参数部分,在函数名称下拉列表中选择您之前创建的 Lambda 函数

    2. 保留有效负载下拉列表中的默认选择。

  6. (可选)选择 “定义” 以查看状态机的 Amazon States Language (ASL) 定义,该定义是根据您在 “动作” 选项卡和 “Ins pec tor” 面板中的选择自动生成的。

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

    例如,输入名称 LambdaStateMachine

    注意

    状态机、执行和活动任务的名称长度不得超过 80 个字符。对于您的账户和 AWS 地区,这些名称必须是唯一的,并且不得包含以下任何内容:

    • 空格

    • 通配符 (? *)

    • 方括号字符 (< > { } [ ])

    • 特殊字符 (" # % \ ^ | ~ ` $ & , ; : /)

    • 控制字符(\\u0000 - \\u001f\\u007f - \\u009f

    Step Functions 接受状态机、执行、活动和包含非ASCII字符的标签的名称。由于带有非ASCII字符的名称不适用于亚马逊 CloudWatch,因此我们建议您仅使用字ASCII符,以便您可以跟踪中的指标。 CloudWatch

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

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

  9. 选择创建

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

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

    注意

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

第 4 步:运行状态机

在创建状态机后,便可以运行它。

  1. 状态机页面上,选择LambdaStateMachine

  2. 选择启动执行

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

  3. (可选)要识别您的执行,您可以指定名称或使用默认生成的执行名称。

    注意

    Step Functions 接受状态机、执行、活动和包含非ASCII字符的标签的名称。由于带有非ASCII字符的名称不适用于亚马逊 CloudWatch,因此我们建议您仅使用字ASCII符,以便您可以跟踪中的指标。 CloudWatch

  4. 输入区域中,将示例数据替换为以下内容。

    { "who" : "AWS Step Functions" }

    "who" 是键名称,您的 Lambda 函数将使用它来获取所问候人员的姓名。

  5. 选择启动执行

    状态机的执行将启动,并显示一个说明正在运行的执行的新页面。

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

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

注意

您还可以在从状态机调用 Lambda 时传递有效负载。有关通过在 Parameters 字段中传递有效负载来调用 Lambda 的更多信息和示例,请参阅使用 Step F AWS Lambda unctions 调用函数