作为 AWS Batch 目标的 CloudWatch Events 任务 - AWS Batch
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

作为 AWS Batch 目标的 CloudWatch Events 任务

Amazon CloudWatch Events 提供近乎实时的系统事件流,这些系统事件描述 Amazon Web Services 资源的变化。AWS Batch 任务可作为 CloudWatch Events 目标提供。使用简单规则,您可以匹配事件并提交AWS Batch作业以响应这些事件。有关更多信息,请参阅 中的什么是 Amazon CloudWatch Events 用户指南 Amazon CloudWatch Events?。

您还可以使用 CloudWatch Events 来计划在特定时间使用 cron 或 rate 表达式调用的自动化操作。有关更多信息,请参阅 中的规则计划表达式Amazon CloudWatch Events 用户指南

将 AWS Batch 作业作为CloudWatch Events目标的常见使用案例包括以下使用案例:

  • 计划的作业是定期发生的。例如cron,任务仅在低使用率时段内发生,此时 Amazon EC2 Spot 实例的价格较低。

  • AWS Batch 作业运行以响应在 中记录的 API 操作CloudTrail。例如,每当将对象上传到指定Amazon S3存储桶时,都会提交作业,并且CloudWatch Events输入转换器会每次将存储桶和对象的键名称传递给AWS Batch参数。

    注意

    在这种情况下,所有AWS资源(如 Amazon S3 存储桶、 CloudWatch Events 规则和所有 CloudTrail 日志)必须位于同一 区域中。

AWS Batch 服务需要多个权限才能代表您运行CloudWatch Events作业,然后您才能提交包含CloudWatch Events规则和目标的 AWS Batch 作业。当您在 CloudWatch Events 控制台中创建指定 AWS Batch 作业作为目标的规则时,您将获得创建此角色的机会。有关此角色所需的服务委托人和 IAM 权限的更多信息,请参阅 CloudWatch Events IAM 角色

创建计划 AWS Batch 任务

以下过程现实了如何创建计划 AWS Batch 任务和所需的 CloudWatch Events IAM 角色。

使用 AWS Batch 创建计划 CloudWatch Events 任务

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

  2. 在左侧导航窗格中,依次选择 Events (事件) 和 Create rule (创建规则)。

  3. 对于 Event source (事件源),选择 Schedule (计划),然后选择是对计划规则使用固定间隔计划还是 cron 表达式。有关更多信息,请参阅 https://docs.amazonaws.cn/AmazonCloudWatch/latest/events/ScheduledEvents.html 中的Amazon CloudWatch Events 用户指南规则的计划表达式

    • 对于 Fixed rate of (固定频率为),为计划输入时间间隔和单位。

    • 对于 Cron expression,为任务计划输入 cron 表达式。这些表达式有六个必填字段。每个字段用空格分隔。有关cron表达式的更多信息和示例,请参阅 中的 Cron Amazon CloudWatch Events 用户指南 表达式。

  4. 对于 Targets,选择 Add target

  5. 选择 Batch job queue (批处理任务队列) 并相应地填写以下字段:

    • 作业队列:输入要在其中计划作业的作业队列的 Amazon 资源名称 (ARN)。

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

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

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

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

  6. 选择要用于任务的现有 CloudWatch Events IAM 角色,或选择 Create a new role for this specific resource (为此特定资源创建新角色) 以创建新角色。有关更多信息,请参阅CloudWatch Events IAM 角色

  7. 对于 Rule definition (规则定义),相应地填写以下字段,然后选择 Create rule (创建规则)。

    • Name (名称):输入规则的名称。

    • Description (描述):(可选) 输入规则的描述。

    • State (状态):选择是启用您的规则以使其在下一个间隔开始计划,还是启用规则直到以后。

使用 AWS Batch 输入转换器将事件信息传递至 CloudWatch Events 目标

您可以使用 CloudWatch Events 输入转换器在任务提交时将事件信息传递至 AWS Batch。如果您因其他AWS事件信息(例如,将对象上传到 Amazon S3 存储桶)而调用任务,这会特别有用。您还可以在容器的 命令中使用具有参数替代值的作业定义,并且CloudWatch Events输入转换器可以基于事件数据提供参数值。例如,以下作业定义预计会看到名为 的参数值。S3bucketS3key.

{ "jobDefinitionName": "echo-parameters", "containerProperties": { "image": "busybox", "vcpus": 2, "memory": 2000, "command": [ "echo", "Ref::S3bucket", "Ref::S3key" ] } }

然后,您只需创建一个AWS Batch事件目标,该目标解析来自启动事件的事件的信息并将其转换为 parameters 对象。当作业运行时,触发事件中的参数将传递到作业容器的 命令。

注意

在这种情况下,所有AWS资源(如 Amazon S3 存储桶、 CloudWatch Events 规则和 CloudTrail 日志)必须位于同一区域中。

创建使用输入转换器的 AWS Batch 目标

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

  2. 在左侧导航窗格中,依次选择 Events (事件) 和 Create rule (创建规则)。

  3. 对于 Event source (事件源),选择 Event Pattern (事件模式),然后根据需要构建规则以满足应用程序需求。

  4. 对于 Targets (目标),选择 Batch job queue (批处理作业队列),然后指定作业队列、作业定义和作业名称以用于此规则调用的作业。

  5. 选择 Configure input (配置输入),然后选择 Input Transformer (输入转换器)。

  6. 在上方输入转换器文本框中,指定要从触发事件中解析的值。例如,要解析 Amazon S3 事件中的存储桶和键名称,请使用以下 JSON。

    {"S3BucketValue":"$.detail.requestParameters.bucketName","S3KeyValue":"$.detail.requestParameters.key"}
  7. 在下方输入转换器文本框中,创建要传递至 Parameters 任务的 AWS Batch 结构。这些参数替换 Ref::S3bucketRef::S3key 当作业运行时,作业容器的 命令中的 占位符。

    {"Parameters" : {"S3bucket": <S3BucketValue>, "S3key": <S3KeyValue>}}

    您还可以更新 ContainerOverrides结构以传递 来更新命令、环境变量和其他设置。

    {"Parameters" : {"S3bucket": <S3BucketValue>}, "ContainerOverrides" : {"Command": ["echo","Ref::S3bucket"]}}
  8. 选择要用于任务的现有 CloudWatch Events IAM 角色,或选择 Create a new role for this specific resource (为此特定资源创建新角色) 以创建新角色。有关更多信息,请参阅CloudWatch Events IAM 角色

  9. 选择 Configure details (配置详细信息),然后对于 Rule definition (规则定义),相应地填写以下字段,然后选择 Create rule (创建规则)

    • Name (名称):输入规则的名称。

    • Description (描述):(可选) 输入规则的描述。

    • State (状态):选择是立即启用规则还是在以后启用规则。