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