本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建使用 Lambda 的 Step Functions 状态机
在本教程中,您将创建一个用于调用 Amazon Lambda 函数的单步工作流程。 Amazon Step Functions
注意
Step Functions 基于状态机 和任务。在 Step Functions 中,状态机称为工作流程,是一系列由事件驱动的步骤。工作流程中的每个步骤都称为状态。例如,任务状态表示另一个 Amazon 服务执行的工作单元,例如调用另一个服务 Amazon Web Services 服务 或 API。在 Step Functions 中,运行用于执行任务的工作流程的实例称为执行。
有关更多信息,请参阅:
Lambda 非常适合于 Task 状态,因为 Lambda 函数无服务器 且易于编写。你可以在 Amazon Web Services Management Console 或你最喜欢的编辑器中编写代码。 Amazon 处理为你的函数提供计算环境并运行它的细节。
第 1 步:创建 Lambda 函数
您的 Lambda 函数接收事件数据并返回问候语。
重要
确保您的 Lambda 函数与 Amazon Web Services 区域 状态机位于同一个 Amazon 账户下。
- 
                    打开 Lambda 控制台 ,然后选择创建函数。 
- 
                    在创建函数页面上,选择从头开始创作。 
- 
                    对于函数名称,请输入 HelloFunction。
- 
                    保留所有其他选项的默认选择,然后选择创建函数。 
- 
                    创建 Lambda 函数后,复制页面右上角显示的该函数的 Amazon 资源名称 (ARN)。以下是示例 ARN: arn:aws:lambda:region:123456789012:function:HelloFunction
- 
                    将以下 Lambda 函数的代码复制到页面的 HelloFunction代码源部分。export const handler = async(event, context, callback) => { callback(null, "Hello from " + event.who + "!"); };此代码将使用输入数据的 who字段组装问候语,该输入数据是由传送到您的函数的event对象提供的。以后当您启动新的执行时,您将为此函数添加输入数据。callback方法将从您的函数返回组装的问候语。
- 
                    选择部署。 
第 2 步:测试 Lambda 函数
测试您的 Lambda 函数以查看其运行情况。
- 
                    选择测试。 
- 
                    对于事件名称,输入 HelloEvent。
- 
                    使用以下内容替换时间 JSON。 { "who": "Amazon Step Functions" }"who"条目对应于您的 Lambda 函数中的event.who字段,用于编写问候语。运行状态机时,您将输入相同的输入数据。
- 
                    选择保存,然后选择测试。 
- 
                    在执行结果下,展开详细信息以查看测试结果。 
第 3 步:创建状态机
使用 Step Functions 控制台创建状态机,用于调用您在第 1 步中创建的 Lambda 函数。
- 
                    打开 Step Functions 控制台 ,从菜单中选择状态机,然后选择创建状态机。 重要确保您的状态机与您之前创建的 Lambda 函数位于相同的 Amazon 账户和区域下。 
- 
                    选择 “从空白处创建”。 
- 
                    为状态机命名,然后选择 “继续”,在 Workflow Studio 中编辑状态机。 
- 
                    在左侧的状态浏览器中,确保已选择操作选项卡。然后,将 Amazon Lambda 调用 API 拖放到标有将第一个状态拖至此处的空白状态处。 
- 
                    在右侧的 Inspector 面板中,配置 Lambda 函数: - 
                            在 API 参数部分,在函数名称下拉列表中选择您之前创建的 Lambda 函数。 
- 
                            保留有效负载下拉列表中的默认选择。 
 
- 
                            
- 
                    (可选)选择定义查看状态机 Amazon States Language (ASL) 的定义,该定义是根据您在操作选项卡和 Inspector 面板中的选择自动生成的。 
- 
                    为状态机指定一个名称。为此,请选择默认状态机名称旁边的编辑图标MyStateMachine。然后,找到状态机配置,在状态机名称框中指定一个名称。 例如,输入名称 LambdaStateMachine。注意状态机、执行和活动任务的名称长度不得超过 80 个字符。对于您的账户和 Amazon 地区,这些名称必须是唯一的,并且不得包含以下任何内容: - 
            空格 
- 
            通配符 ( ? *)
- 
            方括号字符 ( < > { } [ ])
- 
            特殊字符 ( " # % \ ^ | ~ ` $ & , ; : /)
- 
            控制字符( \\u0000-\\u001f或\\u007f-\\u009f)
 Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符会 CloudWatch 阻止亚马逊记录数据,因此我们建议您仅使用 ASCII 字符,这样您就可以跟踪 Step Functions 的指标。 
- 
            
- 
                    (可选)在状态机配置中,指定其他工作流设置,例如状态机类型及其执行角色。 在本教程中,请保留状态机设置中的所有默认选项。 
- 
                    选择创建。 
- 
                    在确认角色创建对话框中,选择确认继续。 您也可以选择查看角色设置,返回至状态机配置。 注意如果您删除了 Step Functions 创建的 IAM 角色,Step Functions 在以后无法重新创建该角色。同样,如果您修改了该角色(例如,通过在 IAM 策略中从主体中删除 Step Functions),Step Functions 在以后也无法还原其原始设置。 
第 4 步:运行状态机
在创建状态机后,便可以运行它。
- 
                    在 “状态机” 页面上,选择LambdaStateMachine。 
- 
                    选择启动执行。 随即显示启动执行对话框。 
- 
                    (可选)输入自定义执行名称,以便覆盖生成的默认执行名称。 非 ASCII 名称和日志记录Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符会 CloudWatch 阻止亚马逊记录数据,因此我们建议您仅使用 ASCII 字符,这样您就可以跟踪 Step Functions 的指标。 
- 
                    在输入区域中,将示例数据替换为以下内容。 { "who" : "Amazon Step Functions" }"who"是键名称,您的 Lambda 函数将使用它来获取所问候人员的姓名。
- 
                    选择启动执行。 状态机的执行将启动,并显示一个说明正在运行的执行的新页面。 
- 
                    Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。 要查看执行结果,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息概览。 
注意
您还可以在从状态机调用 Lambda 时传递有效负载。有关通过在 Parameters 字段中传递有效负载来调用 Lambda 的更多信息和示例,请参阅使用 Step F Amazon Lambda unctions 调用函数。