本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:倾听Amazon BatchEventBridge
在本教程中,您将设置一个简单的Amazon Lambda侦听的函数Amazon Batch工作活动并将其写入 CloudWatch 记录日志流。
先决条件
本教程假定您具备可正常工作的计算环境和作业队列,随时可以接受作业。如果您没有要从中捕获事件的正在运行的计算环境和作业队列,请执行中的步骤开始使用 Amazon Batch创建一个配置文件。在本教程结束时,您可选择向此作业队列提交作业,以测试您是否已正确配置 Lambda 函数。
第 1 步:创建 Lambda 函数
在此过程中,您将创建一个简单的 Lambda 函数来充当目标Amazon Batch事件流消息。
创建目标 Lambda 函数
打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/
。 -
依次选择 Create a Lambda function、Author from scratch。
-
适用于函数名称输入批处理事件流.
-
对于运行时,选择 Python 3.8。
-
选择 Create function(创建函数)。
-
在 Function code 部分中,编辑示例代码以匹配以下示例:
import json def lambda_handler(event, _context): # _context is not used del _context if event["source"] != "aws.batch": raise ValueError("Function only supports input from events with a source type of: aws.batch") print(json.dumps(event))
这是一个简单的 Python 3.8 函数,可输出由发送的事件。Amazon Batch. 如果一切配置正确,则在本教程结束时,您将在 CloudWatch 记录与此 Lambda 函数关联的日志流。
-
选择 Deploy(部署)。
第 2 步:注册事件规则
在本部分中,您将创建 EventBridge 捕获来自您的作业事件的事件规则。Amazon Batch资源的费用。该规则捕获来自Amazon Batch在定义该目标的账户中。作业消息本身包含有关事件源的信息 (包括将事件源提交到其中的作业队列)。您可以使用此信息以编程方式过滤和排序事件。
如果您将Amazon Web Services Management Console要创建事件规则,控制台会自动添加以下 IAM 权限: EventBridge 调用 Lambda 函数。但是,如果您使用Amazon CLI,您必须明确授予权限。有关更多信息,请参阅 。事件和事件模式中的亚马逊 EventBridge 用户指南.
创建 EventBridge 规则
打开 Amazon EventBridge 控制台https://console.aws.amazon.com/events/
. -
在导航窗格中,选择 Rules (规则)。
-
选择 Create rule (创建规则)。
-
为规则输入名称和描述。
规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。
-
适用于定义模式选择事件模式作为事件来源,然后选择自定义模式.
-
在文本区域中粘贴以下事件模式。
{ "source": [ "aws.batch" ] }
此规则适用于你的所有Amazon Batch团体和每一个Amazon Batchevent. 或者,您也可以创建一个更具体的规则来过滤掉一些结果。
-
适用于选择目标,在目标,选择Lambda 函数,然后选择 Lambda 函数。
-
对于 Select event bus (选择事件总线),选择 Amazon default event bus (亚马逊云科技默认事件总线)。您只能使用原定设置事件总线创建计划规则。
-
适用于选择目标,选择Batch 作业队列然后相应地填写以下字段:
-
适用于Batch 作业队列目标类型, EventBridge 需要权限将事件发送到目标。 EventBridge 您可以创建运行事件所需的 IAM 角色。请执行以下任一操作:
-
若要自动创建 IAM 角色,请选择 Create a new role for this specific resource(为此特定资源创建新角色)
-
要使用您之前创建的 IAM 角色,请选择使用现有角色
有关更多信息,请参阅 IAM 角色 EventBridge。
-
-
对于重试策略和死信队列:,在重试策略下:
-
适用于活动的最长年龄中输入一个介于 1 分钟 (00:01) 和 24 小时 (24:00) 之间的值。
-
对于重试尝试,输入 0 到 185 之间的数字。
-
-
适用于死信队列,选择是否使用标准 Amazon SQS 队列作为死信队列。 EventBridge 如果与此规则匹配的事件无法传递到目标,将这些事件发送到死信队列。请执行下列操作之一:
-
选择无不使用死信队列。
-
在当前 Amazon 帐户中选择选择一个Amazon SQS队列用作死信队列,然后从下拉列表中选择要使用的队列。
-
选择在其他 Amazon SQS 队列中选择其他队列 Amazon 帐户作为死信队列,然后输入要使用的队列的 ARN。您必须将基于资源的策略附加到队列,以授予 EventBridge 向其发送消息的权限。
-
-
(可选)为规则输入一个或多个标签。
-
选择 Create(创建)。
第 3 步:测试配置
你现在可以测试 EventBridge 通过向作业队列提交作业来配置。如果所有配置都正确完成,您的 Lambda 函数将触发并将事件数据写入到 CloudWatch 记录函数的日志流。
测试配置
打开Amazon Batch控制台https://console.aws.amazon.com/batch/
. -
提交新的 Amazon Batch 作业。有关更多信息,请参阅 提交作业。
打开 CloudWatch 控制台https://console.aws.amazon.com/cloudwatch/
. -
在导航窗格中,选择 Logs (日志),然后选择 Lambda 函数的日志组(例如,/aws/lambda/
my-function
)。 -
选择日志流以查看事件数据。