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

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

教程:侦听 Amazon Batch EventBridge

在本教程中,您设置一个简单的 Amazon Lambda 函数,该函数会侦听 Amazon Batch 任务事件并将这些事件写出到 CloudWatch Logs 日志流。

先决条件

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

步骤 1:创建 Lambda 函数

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

创建目标 Lambda 函数
  1. 打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

  2. 选择 Create function(创建函数),然后选择 Author from scratch(从头开始创作)。

  3. 对于函数名称,请输入 batch-event-stream-handler

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

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

  6. 代码源部分中,编辑示例代码以匹配以下示例:

    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 发送的事件。如果一切配置正确,则在本教程结束时,您将在与此 Lambda 函数关联的 CloudWatch Logs 日志流中看到事件详细信息。

  7. 选择 Deploy(部署)。

步骤 2:注册事件规则

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

注意

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

创建 EventBridge 规则
  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

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

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

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

  5. 对于 Event bus(事件总线),请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发,请选择 Amazon 默认事件总线。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  6. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

  7. 选择 Next(下一步)。

  8. 对于 Event source(事件源),选择 Other(其他)。

  9. 对于事件模式,选择自定义模式(JSON 编辑器)

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

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

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

  11. 选择 Next(下一步)。

  12. 对于 Target types(目标类型),选择 Amazon service(服务)。

  13. 对于选择目标,请选择 Lambda 函数,然后选择您的 Lambda 函数。

  14. (可选)对于 Additional settings(其他设置),执行以下操作:

    1. 对于 Maximum age of event(事件的最大时长),输入一分钟(00:01)与 24 小时(24:00)之间的值。

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

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

      • 选择不使用死信队列。

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

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

  15. 选择 Next(下一步)。

  16. (可选)为规则输入一个或多个标签。有关更多信息,请参阅 Amazon EventBridge 用户指南中的 Amazon EventBridge 标签

  17. 选择 Next(下一步)。

  18. 查看规则详细信息并选择 Create rule(创建规则)。

第 3 步:测试您的配置

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

测试配置
  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. 选择日志流以查看事件数据。