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

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

Amazon Batch作为 CloudWatch 事件目标的工作

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

您还可以使用 CloudWatch 事件来计划使用cron或 Rate 表达式。有关更多信息,请参阅 。计划表达式中的Amazon CloudWatch Events 用户指南.

常见使用案例Amazon Batch作业作为 CloudWatch 事件目标包括以下使用案例:

  • 将创建计划作业,以定期执行。例如,cron作业仅在 Amazon EC2 竞价型实例成本较低的使用率小时内发生。

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Batch作业运行以响应在 CloudTrail 中记录的 API 操作。例如,每当对象上传到指定 Amazon S3 存储桶时,都提交任务,而 CloudWatch Events 输入转换器将存储桶和对象的键名称传递至Amazon Batch参数。

    注意

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

提交之前Amazon Batch作业与 CloudWatch 事件规则和目标,则 CloudWatch 事件服务需要多个权限才能运行Amazon Batch作业代表您。当您在 CloudWatch 事件控制台中创建一个规则,该规则指定Amazon Batch任务作为目标,您将获得创建此角色的机会。有关此角色所需的服务委托人和 IAM 权限的更多信息,请参阅CloudWatch 事件 IAM 角色.

创建计划 Amazon Batch 任务

以下过程介绍如何创建计划Amazon Batch作业和所需的 CloudWatch 事件 IAM 角色。

创建计划的Amazon BatchJob CloudWatch Events

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

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

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

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

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

  4. 对于 Targets,选择 Add target

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

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

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

    • Job Name:输入作业的名称。

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

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

  6. 选择要用于任务的现有 CloudWatch 事件 IAM 角色,或为此特定资源创建新角色创建新目标域。有关更多信息,请参阅CloudWatch 事件 IAM 角色

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

    • 名称:输入规则的名称。

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

    • 州:选择是启用规则以便规则在下一个时间间隔开始计划,还是启用规则直到将来。

将事件信息传递到Amazon Batch使用 CloudWatch 事件输入转换器的目标

您可以使用 CloudWatch 事件输入转换器将事件信息传递到Amazon Batch在作业提交中。如果您调用任务作为其他Amazon事件信息,如将对象上传到 Amazon S3 存储桶。您还可以将作业定义与容器命令中的参数替代值一起使用,而且 CloudWatch Events 输入转换器可以基于事件数据提供参数值。例如,以下作业定义期望看到名为S3 BubucketS3 Key.

{ "jobDefinitionName": "echo-parameters", "containerProperties": { "image": "busybox", "resourceRequirements": [ { "type": "MEMORY", "value": "2000" }, { "type": "VCPU", "value": "2" } ], "command": [ "echo", "Ref::S3bucket", "Ref::S3key" ] } }

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

注意

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

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

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

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

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

  4. 适用于目标中,选择Batch 作业队列然后指定要用于由此规则调用的作业的作业队列、作业定义和作业名称。

  5. 选择配置输入,然后选择输入转换器.

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

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

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

    您也可以更新容器覆盖结构来更新命令、环境变量和其他设置。

    {"Parameters" : {"S3bucket": <S3BucketValue>}, "ContainerOverrides" : {"Command": ["echo","Ref::S3bucket"]}}
  8. 选择要用于任务的现有 CloudWatch 事件 IAM 角色,或为此特定资源创建新角色创建新目标域。有关更多信息,请参阅CloudWatch 事件 IAM 角色

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

    • 名称:输入规则的名称。

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

    • 州:选择是立即启用规则还是启用规则,直到将来为止。