创建使用 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 中,工作流被称为状态机,它是一系列事件驱动的步骤。工作流程中的每个步骤都称为状态。任务状态代表其他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. 创建函数页面上,选择从 Scratch 开始创作

  3. 对于 Function name(函数名称),请输入 HelloFunction

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

  5. 创建 Lambda 函数后,复制页面右上角显示的函数的亚马逊资源名称 (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. 选择 Deploy(部署)。

第 2 步:测试 Lambda 函数

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

  1. 选择 Test(测试)。

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

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

    { "who": "Amazon Step Functions" }

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

  4. 选择 “保存”,然后选择 “测试”。

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

步骤 3:创建状态机

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

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

    重要

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

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

  3. 选择 Select (选择)。这将在中打开工作流程工作室设计模式

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

    1. Amazon LambdaInvoke API 拖放到标有 “在此处拖动第一个状态” 的空白状态

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

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

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

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

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

    例如,输入名称LambdaStateMachine

    注意

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

    • 空白

    • 通配符 () ? *

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

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

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

    如果您的状态机是 Express 类型,则可以为状态机的多个执行提供相同的名称。即使多个执行的名称相同,Step Functions 也会为每个 Express 状态机执行生成唯一的执行 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. 选择 Start execution (开始执行)

    将显示 “开始执行” 对话框。

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

    注意

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

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

    { "who" : "Amazon Step Functions" }

    "who"是您的 Lambda 函数用来获取要打招呼的人的名字的密钥名称。

  5. 选择 Start Execution (开始执行)

    您的状态机开始执行,并显示一个显示正在运行的执行的新页面。

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

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

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

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