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

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

Amazon Batch作业为 EventBridge 目标

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

您还可以使用 EventBridge 安排在特定时间调用的自动操作cron或 Rate 表达式。有关更多信息,请参阅 。创建 Amazon EventBridge 按计划运行的规则中的亚马逊 EventBridge 用户指南.

的常见使用案例Amazon Batch作业作为 EventBridge 目标包括以下使用案例:

  • 将创建计划作业以定期发生。例如,cron只有在 Amazon EC2 竞价型实例成本较低的情况下才会发生作业。

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Batch作业运行是为响应在 CloudTrail 中登录的 API 操作而运行的。例如,只要将对象上传到指定的 Amazon S3 存储桶,就会提交任务。每次发生这种情况时, EventBridge input 变压器将对象的存储桶和密钥名称传递给Amazon Batch参数。

    注意

    在这种情况下,所有相关Amazon资源必须位于同一区域。这包括诸如 Amazon S3 存储桶等资源, EventBridge 规则,以及 CloudTrail 日志。

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

创建计划 Amazon Batch 任务

以下过程演示如何创建计划。Amazon Batch工作和所需 EventBridge IAM 角色。

创建计划Amazon Batch使用 EventBridge

  1. 打开 Amazon EventBridge 控制台https://console.aws.amazon.com/events/.

  2. 在导航窗格中,选择 Rules (规则)

  3. 选择 Create rule (创建规则)

  4. 为规则输入名称和描述。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  5. 对于 Define pattern (定义模式),选择 Schedule (计划)

  6. 要么选择固定速率并指定任务的运行频率,或者选择Cron 表达式然后指定一个用于定义何时启动任务的 cron 表达式。有关更多信息,请参阅 。创建 Amazon EventBridge 按计划运行的规则中的亚马逊 EventBridge 用户指南

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

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

  7. 对于 Select event bus (选择事件总线),选择 Amazon default event bus (亚马逊云科技默认事件总线)。您只能使用原定设置事件总线创建计划规则。

  8. 适用于选择目标,选择Batch 作业队列然后相应地填写以下字段:

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

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

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

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

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

  9. 适用于Batch 作业队列目标类型, EventBridge 需要权限将事件发送到目标。 EventBridge 您可以创建运行事件所需的 IAM 角色。请执行以下任一操作:

    • 若要自动创建 IAM 角色,请选择 Create a new role for this specific resource(为此特定资源创建新角色)

    • 要使用您之前创建的 IAM 角色,请选择使用现有角色

    有关更多信息,请参阅 IAM 角色 EventBridge

  10. 对于重试策略和死信队列:,在重试策略下:

    1. 适用于活动的最长年龄中输入一个介于 1 分钟 (00:01) 和 24 小时 (24:00) 之间的值。

    2. 对于重试尝试,输入 0 到 185 之间的数字。

  11. 适用于死信队列,选择是否使用标准 Amazon SQS 队列作为死信队列。 EventBridge 如果与此规则匹配的事件无法传递到目标,将这些事件发送到死信队列。请执行下列操作之一:

    • 选择不使用死信队列。

    • 在当前 Amazon 帐户中选择选择一个Amazon SQS队列用作死信队列,然后从下拉列表中选择要使用的队列。

    • 选择在其他 Amazon SQS 队列中选择其他队列 Amazon 帐户作为死信队列,然后输入要使用的队列的 ARN。您必须将基于资源的策略附加到队列,以授予 EventBridge 向其发送消息的权限。

  12. (可选)为规则输入一个或多个标签。

  13. 选择 Create(创建)。

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

您可以使用 EventBridge 将事件信息传递到的输入转换器Amazon Batch在作业提交中。如果您因其他任务而调用任务,这可能尤为重要。Amazon活动信息。例如,将对象上传到 Amazon S3 存储桶。您还可以将作业定义与容器命令中的参数替代值一起使用。这些区域有: EventBridge 输入转换器可以基于事件数据提供参数值。例如,以下作业定义希望看到名为的参数值:S3BucketS3Key.

{ "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 存储桶) EventBridge 规则,以及 CloudTrail log) 必须位于同一区域。

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

  1. 打开 Amazon EventBridge 控制台https://console.aws.amazon.com/events/.

  2. 在左侧导航窗格中,选择事件Rule创建规则.

  3. 适用于名称和描述,请提供一个名称。名称最多可以有 64 个字母字符。它可以包含句点 (.)、连字符 (-) 和下划线 (_)。描述是可选的。

  4. 适用于定义模式,选择事件模式,然后根据需要构建规则以满足应用程序需求。

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

  6. 选择配置目标输入然后选择输入转换器.

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

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

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

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

    { "Parameters" : { "S3bucket": <S3BucketValue> }, "ContainerOverrides" : { "Command": [ "echo", "Ref::S3bucket" ] } }
    注意

    成员的姓名容器覆盖结构必须大写。例如,使用CommandResourceRequirements,不是command要么resourceRequirements.

  9. 选择现有 EventBridge 用于你的工作的 IAM 角色,或者为此特定资源创建新角色创建新目标域。有关更多信息,请参阅 IAM 角色 EventBridge

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

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

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

    • 州:选择是立即启用规则还是启用规则直到以后。