创建使用 Lambda 的 Step Functions 状态机 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建使用 Lambda 的 Step Functions 状态机

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

注意

Step Functions 基于状态机和任务。在 Step Functions 中,工作流称为状态机,是由事件驱动的一系列步骤。工作流中的每个步骤都称为状态。Task状态代表其他 Amazon 服务(例如 Amazon Lambda)执行的工作单元。任务状态可以调用任何 Amazon Web Service 或 API。

有关更多信息,请参阅:

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

第 1 步:创建 Lambda 函数

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

重要

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

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

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

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

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

  5. 创建 Lambda 函数后,复制页面右上角显示的该函数的 Amazon 资源名称 (ARN)。要复制 ARN,请单击 
                                        copy Amazon Resource Name
                                    。以下是示例 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": "Amazon Step Functions" }

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

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

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

第 3 步:创建状态机

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

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

    重要

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

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

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

  4. 在左侧的状态浏览器中,确保已选择操作选项卡。然后执行以下操作:

    1. Amazon Lambda 调用 API 拖放到标有将第一个状态拖至此处的空白状态处。

      
                                    状态浏览器
  5. 在右侧的 Inspector 面板中,配置 Lambda 函数:

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

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

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

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

    例如,输入名称 LambdaStateMachine

    注意

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

    • 空格

    • 通配符 (? *)

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

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

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

    如果您的状态机是快速类型,则可以为状态机的多个执行提供相同的名称。即使多个执行的名称相同,Step Functions 也会为每个快速状态机执行生成唯一的执行 ARN。

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

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

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

  9. 选择创建

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

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

    注意

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

第 4 步:运行状态机

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

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

  2. 选择启动执行

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

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

    注意

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

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

    { "who" : "Amazon Step Functions" }

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

  5. 选择启动执行

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

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

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

    
                            步骤详细信息窗格的输出选项卡显示状态机执行返回的输出。
注意

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