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

作为 CloudWatch Events 目标的 AWS Batch 任务

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 目标的一些常用案例为:

  • 创建定期执行的计划任务,例如在低使用率时段内(此时 Amazon EC2 Spot 实例的价格较低)执行的 cron 任务。

  • 运行 AWS Batch 任务以响应在 CloudTrail 中记录的 API 操作,例如,在对象上传到指定 Amazon S3 存储桶时自动提交任务,然后使用 CloudWatch Events 输入转换器将存储桶和对象的键名称传递至 AWS Batch 参数。

    注意

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

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

创建计划 AWS Batch 任务

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

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

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

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

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

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

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

  4. 对于 Targets,选择 Add target

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

    • 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 (状态):选择是启用规则以便规则在下一个时间间隔开始计划,还是禁用规则直到某个将来的日期。

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

您可以使用 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. 在下方输入转换器文本框中,创建要传递至 AWS Batch 任务的 Parameters 结构。这些参数将被替换为作业运行时作业容器的命令中的 Ref::S3bucketRef::S3key 占位符。

    {"Parameters" : {"S3bucket": <S3BucketValue>, "S3key": <S3KeyValue>}}
  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 (状态):选择是立即启用规则,还是禁用规则直到某个将来的日期。