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

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

教程:侦听 AWS Batch CloudWatch Events

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

Prerequisites

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

步骤 1:创建 Lambda 函数

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

创建目标 Lambda 函数

  1. 通过以下网址打开 AWS Lambda 控制台:https://console.amazonaws.cn/lambda/

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

  3. 对于 Function name (函数名称),输入 batch-event-stream-handler。

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

  7. 选择 Deploy

步骤 2:注册事件规则

在本节中,您将创建一个 CloudWatch Events 事件规则,以捕获来自 AWS Batch 资源的作业事件。此规则捕获来自定义它的账户AWS Batch中的所有事件。作业消息本身包含有关事件源的信息,包括提交事件源的作业队列。您可以使用此信息以编程方式对事件进行筛选和排序。

注意

如果您使用 AWS 管理控制台 创建事件规则,则控制台会自动添加 IAM 的权限CloudWatch Events以调用您的 Lambda 函数。但是,如果您使用 创建事件规则AWS CLI,则必须显式授予权限。有关更多信息,请参阅 https://docs.amazonaws.cn/AmazonCloudWatch/latest/DeveloperGuide/CloudWatchEventsandEventPatterns.html 中的Amazon CloudWatch 用户指南事件和事件模式

创建您的 CloudWatch Events 规则

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格上,选择 EventsCreate rule

  3. 对于 Event source,选择 Event Pattern 作为事件源,然后选择 Build custom event pattern

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

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

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

  5. 对于 Targets,选择 Add target。对于 Target type (目标类型),选择 Lambda function (Lambda 函数),然后选择您的 Lambda 函数。

  6. 选择 Configure details

  7. 对于 Rule definition (规则定义),输入规则的名称和描述,然后选择 Create rule (创建规则)。

第 3 步:测试您的配置

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

测试配置

  1. https://console.amazonaws.cn/batch/ 打开 AWS Batch 控制台。

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

  3. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

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

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