教程:倾听Amazon BatchEventBridge - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:倾听Amazon BatchEventBridge

在本教程中,您将设置一个简单的Amazon Lambda侦听的函数Amazon Batch工作活动并将其写入 CloudWatch 记录日志流。

先决条件

本教程假定您具备可正常工作的计算环境和作业队列,随时可以接受作业。如果您没有要从中捕获事件的正在运行的计算环境和作业队列,请执行中的步骤开始使用 Amazon Batch创建一个配置文件。在本教程结束时,您可选择向此作业队列提交作业,以测试您是否已正确配置 Lambda 函数。

第 1 步:创建 Lambda 函数

在此过程中,您将创建一个简单的 Lambda 函数来充当目标Amazon Batch事件流消息。

创建目标 Lambda 函数

  1. 打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

  2. 依次选择 Create a Lambda functionAuthor from scratch

  3. 适用于函数名称输入批处理事件流.

  4. 对于运行时,选择 Python 3.8

  5. 选择 Create function(创建函数)。

  6. 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 函数关联的日志流。

  7. 选择 Deploy(部署)。

第 2 步:注册事件规则

在本部分中,您将创建 EventBridge 捕获来自您的作业事件的事件规则。Amazon Batch资源的费用。该规则捕获来自Amazon Batch在定义该目标的账户中。作业消息本身包含有关事件源的信息 (包括将事件源提交到其中的作业队列)。您可以使用此信息以编程方式过滤和排序事件。

注意

如果您将Amazon Web Services Management Console要创建事件规则,控制台会自动添加以下 IAM 权限: EventBridge 调用 Lambda 函数。但是,如果您使用Amazon CLI,您必须明确授予权限。有关更多信息,请参阅 。事件和事件模式中的亚马逊 EventBridge 用户指南.

创建 EventBridge 规则

  1. 打开 Amazon EventBridge 控制台https://console.aws.amazon.com/events/.

  2. 在导航窗格中,选择 Rules (规则)

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

  4. 为规则输入名称和描述。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  5. 适用于定义模式选择事件模式作为事件来源,然后选择自定义模式.

  6. 在文本区域中粘贴以下事件模式。

    { "source": [ "aws.batch" ] }

    此规则适用于你的所有Amazon Batch团体和每一个Amazon Batchevent. 或者,您也可以创建一个更具体的规则来过滤掉一些结果。

  7. 适用于选择目标,在目标,选择Lambda 函数,然后选择 Lambda 函数。

  8. 对于 Select event bus (选择事件总线),选择 Amazon default event bus (亚马逊云科技默认事件总线)。您只能使用原定设置事件总线创建计划规则。

  9. 适用于选择目标,选择Batch 作业队列然后相应地填写以下字段:

    • Job 队列:输入任务队列的 Amazon 资源名称 (ARN) 以计划任务。

    • Job 定义:输入要用于任务的任务定义的名称和版本或完整 ARN。

    • Job 名称:输入您的任务的名称。

    • 数组大小:(可选)输入要运行多个副本的任务的数组大小。有关更多信息,请参阅 数组作业

    • Job 尝试:(可选)输入任务失败时重试的次数。有关更多信息,请参阅 自动作业重试

  10. 适用于Batch 作业队列目标类型, EventBridge 需要权限将事件发送到目标。 EventBridge 您可以创建运行事件所需的 IAM 角色。请执行以下任一操作:

    • 若要自动创建 IAM 角色,请选择 Create a new role for this specific resource(为此特定资源创建新角色)

    • 要使用您之前创建的 IAM 角色,请选择使用现有角色

    有关更多信息,请参阅 IAM 角色 EventBridge

  11. 对于重试策略和死信队列:,在重试策略下:

    1. 适用于活动的最长年龄中输入一个介于 1 分钟 (00:01) 和 24 小时 (24:00) 之间的值。

    2. 对于重试尝试,输入 0 到 185 之间的数字。

  12. 适用于死信队列,选择是否使用标准 Amazon SQS 队列作为死信队列。 EventBridge 如果与此规则匹配的事件无法传递到目标,将这些事件发送到死信队列。请执行下列操作之一:

    • 选择不使用死信队列。

    • 在当前 Amazon 帐户中选择选择一个Amazon SQS队列用作死信队列,然后从下拉列表中选择要使用的队列。

    • 选择在其他 Amazon SQS 队列中选择其他队列 Amazon 帐户作为死信队列,然后输入要使用的队列的 ARN。您必须将基于资源的策略附加到队列,以授予 EventBridge 向其发送消息的权限。

  13. (可选)为规则输入一个或多个标签。

  14. 选择 Create(创建)。

第 3 步:测试配置

你现在可以测试 EventBridge 通过向作业队列提交作业来配置。如果所有配置都正确完成,您的 Lambda 函数将触发并将事件数据写入到 CloudWatch 记录函数的日志流。

测试配置

  1. 打开Amazon Batch控制台https://console.aws.amazon.com/batch/.

  2. 提交新的 Amazon Batch 作业。有关更多信息,请参阅 提交作业

  3. 打开 CloudWatch 控制台https://console.aws.amazon.com/cloudwatch/.

  4. 在导航窗格中,选择 Logs (日志),然后选择 Lambda 函数的日志组(例如,/aws/lambda/my-function)。

  5. 选择日志流以查看事件数据。