AWS Batch
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:侦听 AWS Batch CloudWatch Events

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

先决条件

本教程假定您具备可正常工作的计算环境和作业队列,随时可以接受作业。如果您没有要从中捕获事件的正在运行的计算环境和作业队列,请执行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. 对于 Name,输入 batch-event-stream-handler

  4. 对于 Role,依次选择 Create a custom roleAllow

  5. 选择 Create function

  6. Function code 部分中,为运行时选择 Python 2.7,并编辑示例代码以匹配以下示例:

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

  7. 选择 Save

步骤 2:注册事件规则

接下来,您创建一个 CloudWatch Events 事件规则,用于捕获来自 AWS Batch 资源的任务事件。该规则捕获来自定义该规则的账户中的 AWS Batch 的所有事件。作业消息本身包含有关事件源的信息 (包括将事件源提交到其中的作业队列),您可使用这些信息以编程方式对事件进行筛选和排序。

注意

在使用 AWS 管理控制台创建事件规则时,控制台会自动添加所需的 IAM 权限以便向 CloudWatch Events 授予调用 Lambda 函数所需的权限。如果您使用 AWS CLI 创建事件规则,则必须明确授予权限。有关更多信息,请参阅 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. 选择日志流以查看事件数据。