如何设置 Lambda 函数以在 AWS Step Functions 中发生状态变化时进行调用?

上次更新日期:2021 年 11 月 1 日

我想要在每次 AWS Step Functions 中发生状态变化时调用 AWS Lambda 函数。该如何操作?

解决方案

注意:这些说明描述了如何在 Step Functions 中发生状态变化时使用 Amazon EventBridge 事件规则调用 Lambda 函数。按照步骤操作时,请确保执行以下操作:

  • 确认您用于调用 Lambda 函数的事件变化为支持的 API 操作
  • 在相同的 AWS 区域中创建 Step Functions 状态机、Lambda 函数和 EventBridge 事件规则。

为 Step Functions 和 Lambda 创建 IAM 角色

1.    为 Step Functions 创建 AWS Identity and Access Management (IAM) 角色。创建 IAM 角色时,请执行以下操作:
授予 IAM 角色权限以执行您的使用案例要求的任何操作。
允许操作 lambda:InvokeFunction,以使您的状态机调用您的 Lambda 函数。
注意:托管策略 AWSLambdaRole 包括调用 Lambda 函数所需的权限。

2.    创建一个 Lambda 执行角色,以向您的函数授予权限以将日志上传到 Amazon CloudWatch。
注意:托管策略 AWSLambdaBasicExecutionRole 授予您的函数将日志上传到 CloudWatch 的基本权限。

创建 Step Functions 状态机

在 Step Functions 控制台中创建状态机。在执行所需的 IAM 角色中,选择您为 Step Functions 创建的现有角色 。

有关更多信息,请参阅什么是 AWS Step Functions?

创建一个被配置为打印其收到的事件的 Lambda 函数

1.    在 Lambda 控制台中创建函数。在执行角色中,选择您为 Lambda 创建的现有角色。

2.    在 Lambda 控制台中,使用代码编辑器更新函数代码,以便在运行时,该函数会打印其收到的事件。

示例 Python 代码,该代码告诉 Lambda 函数打印其收到的事件

import json

def lambda_handler(event, context):
print("Received event: " + json.dumps(event)) return {
'statusCode': 200,
'body': json.dumps("Hello")
}

有关更多信息,请参阅使用 Python 构建 Lambda 函数

创建 EventBridge 事件规则,该规则在 Step Functions 中发生状态变化时调用您的 Lambda 函数

1.    打开 EventBridge 控制台

2.    在左侧导航窗格的事件下,选择规则

3.    选择 Create rule(创建规则)。

4.    对于 Name(名称),输入该规则的名称。

5.    对于 Define pattern(定义模式),选择 Event Pattern(事件模式)。

6.    对于 Event matching pattern(事件匹配模式),选择 Pre-defined pattern by service(按服务分类的预定义模式)。

7.    对于 Service provider(服务提供商),选择 AWS

8.    对于 Service Name(服务名称),选择 Step Functions

9.    对于 Event Type(事件类型),选择 Step Functions Execution Status Change(Step Functions 执行状态更改)。

注意:您也可以选择让所有事件都使 Step Functions 启动规则。或者,您可以选择通过 CloudTrail 进行的 AWS API 调用启动某些 Step Functions API 调用事件的规则,例如 StartExecution。有关更多信息,请参阅来自 AWS 服务的事件

10.    选择状态、状态机 Amazon Resource Names (ARN) 以及您希望启动该事件的执行 ARN。您可以为每个触发器类型选择 Any(任何),或确定每个触发器的特定状态或 ARN。

11.    在 Select targets(选择目标)下,确认 Lambda 函数是目标类型。

12.    对于 Function(函数),选择创建的 Lambda 函数

13.    选择 Create rule(创建规则)。

有关更多信息,请参阅 Amazon EventBridge 事件适用于 Step Functions 的 EventBridge 的执行状态更改

测试您的设置

1.    在 Step Functions 控制台中,启动状态机的新执行

2.    在 CloudWatch 控制台左侧导航窗格中的日志下,选择日志组

3.    选择您的 Lambda 函数创建的日志流。

4.    验证日志流中的事件详细信息。

注意:在新执行开始后,日志流可能需要几分钟的时间才能显示。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?