

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

# AWS Batch 作业作为 EventBridge 的目标
<a name="batch-cwe-target"></a>

Amazon EventBridge 提供近乎实时的系统事件流，这些系统事件可以描述亚马逊云科技资源中的更改。通常，在 Amazon Elastic Container Service，Amazon Elastic Kubernetes Service 和 AWS Fargate 作业上的 AWS Batch 作为 EventBridge 的目标提供。可以通过使用简单的规则来匹配事件并根据事件提交 AWS Batch 作业。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[什么是 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)

您还可以使用 EventBridge 来计划使用 **cron** 或 rate 表达式在某些时间触发的自动化操作。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[创建按计划运行的 Amazon EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html) 

有关如何创建在事件与事件模式匹配时运行的规则的信息，请参阅*Amazon EventBridge 用户指南*中的[创建对事件作出反应的 Amazon EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)。

作为 EventBridge 目标的 AWS Batch 作业的常见用例包括以下：
+ 计划的作业以固定的时间间隔出现。例如，只有在 Amazon EC2 竞价型实例价格较低时，**cron** 作业才会在使用率低的时段出现。
+ AWS Batch 作业为了响应 CloudTrail 中记录的 API 操作而运行。例如，只要将对象上传到指定的 Amazon S3 存储桶，就会提交作业。每次发生这种情况时，EventBridge 输入转换器都会将对象的存储桶和密钥名称传递给 AWS Batch 参数。
**注意**  
在本场景中，所有相关 AWS 资源必须位于同一区域中。这包括诸如 Amazon S3 存储桶、EventBridge 规则和 CloudTrail 日志之类的资源。

在您可以使用 EventBridge 规则和目标提交 AWS Batch 作业之前，EventBridge 服务需要多个权限才能运行 AWS Batch 作业。在 EventBridge 控制台中创建将 AWS Batch 作业指定为目标的规则时，您可以创建此角色。有关此角色所需的服务委托人和 IAM 权限的更多信息，请参阅 [EventBridge IAM 角色](CWE_IAM_role.md)。

**Topics**
+ [教程：创建计划的 AWS Batch 作业](scheduled-batch-job.md)
+ [教程：创建一个具有事件模式的规则](event-pattern-batch-job.md)
+ [教程：使用 EventBridge 输入变压器按计划将事件信息传递给 AWS Batch 目标](cwe-input-transformer.md)

# 教程：创建计划的 AWS Batch 作业
<a name="scheduled-batch-job"></a>

以下过程介绍了如何创建计划的 AWS Batch 作业和所需的 EventBridge IAM 角色。

**若要使用 EventBridge 创建计划 AWS Batch 任务**
**注意**  
此过程适用于 Amazon ECS、Amazon EKS 和 AWS Fargate 作业上所有的 AWS Batch。

1. 访问 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)，打开 Amazon EventBridge 控制台。

1. 从导航栏中，选择要使用的AWS 区域。

1. 在导航窗格中，选择**规则**。

1. 选择**创建规则**。

1. 对于**名称**，为计算环境指定唯一名称。名称最多可以包含 64 个字符。可以包含大小写字母、数字、连字符（-）和下划线（\$1）。
**注意**  
规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

1. （可选）对于**描述**，输入规则的描述。

1. 对于**事件总线**，请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发，请选择**默认**。当您账户中的某个 AWS 服务 发出一个事件时，它始终会发送到您账户的默认事件总线。

1. （可选）如果您不想立即运行所选总线上的规则，请关闭该规则。

1. 对于 **Rule type**（规则类型），选择 **Schedule**（计划）。

1. 选择**继续创建规则**，或者选择**下一步**。

1. 对于 **Schedule pattern**（计划模式），执行以下操作之一：
   + 选择**在特定时间（例如上午 8:00）运行的精细计划。每月第一个星期一，太平洋标准时间**，然后输入 cron 表达式。有关更多信息，请参阅* Amazon EventBridge 用户指南*中的 [Cron 表达式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html#eb-cron-expressions)。
   + 选择**以常规速率运行的计划，例如每 10 分钟**，然后输入 rate 表达式。

1. 选择**下一步**。

1. 对于 **Target types**（目标类型），选择 **AWS 服务**。

1. 在**选择目标**中，选择**批处理作业队列**。然后，进行以下配置：
   + **Job queue**（作业队列）：输入您在其中计划作业的作业队列的 Amazon 资源名称（ARN）。
   + **Job definition** (任务定义)：输入要用于任务的任务定义的名称和版本或完整 ARN。
   + **Job name** (任务名称)：输入您的任务的名称。
   + **Array size** (数组大小)：(可选) 输入要运行多个副本的任务的数组大小。有关更多信息，请参阅 [数组作业](array_jobs.md)。
   + **Job attempts** (任务尝试次数)：(可选) 输入任务失败时重试的次数。有关更多信息，请参阅 [自动作业重试](job_retries.md)。

1. 对于 **Batch job queue**（批处理作业队列）目标类型，EventBridge 需要权限才能将事件发送到目标。EventBridge 可以创建运行事件所需的 IAM 角色。请执行以下操作之一：
   + 要自动创建 IAM 角色，请选择**为此特定资源创建新角色**。
   + 要使用您已经创建的 IAM 角色，请选择 **使用现有角色**。

1. （可选）展开 **Additional settings (其他设置)**。

   1. 在**配置目标输入**中，选择如何处理事件中的文本，然后再将其传递到目标。

   1. 对于**事件的最大期限**，请指定未处理事件保留多长时间的时间间隔。

   1. 对于**重试次数**，请输入事件的重试次数。

   1. 对于**死信队列**，选择一个选项来说明如何处理未处理的事件。如有必要，指定要用作死信队列的 Amazon SQS 队列。

1. （可选）选择 **Add another target**（添加其他目标），以为此规则添加其他目标。

1. 选择**下一步**。

1. （可选）在**标签**中，选择**添加新标签**以为规则添加资源标签。有关更多信息，请参阅 [Amazon EventBridge 标签](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)。

1. 选择**下一步**。

1. 对于**查看和创建**，请查看配置步骤。如果需要进行更改，请选择 **Edit**（编辑）。完成后，选择 **Create**（创建）。

有关创建规则的更多信息，请参阅 *Amazon EventBridge 用户指南*中的[创建按计划运行的 Amazon EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)

# 教程：创建一个具有事件模式的规则
<a name="event-pattern-batch-job"></a>

以下过程介绍如何使用事件模式创建规则。

**创建一条规则，在事件与定义的模式匹配时将事件发送到目标**
**注意**  
此过程适用于 Amazon ECS、Amazon EKS 和 AWS Fargate 作业上所有的 AWS Batch。

1. 访问 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)，打开 Amazon EventBridge 控制台。

1. 从导航栏中，选择要使用的AWS 区域。

1. 在导航窗格中，选择**规则**。

1. 选择**创建规则**。

1. 对于**名称**，为计算环境指定唯一名称。名称最多可以包含 64 个字符。可以包含大小写字母、数字、连字符（-）和下划线（\$1）。
**注意**  
规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

1. （可选）对于**描述**，输入规则的描述。

1. 对于**事件总线**，请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发，请选择**默认**。当您账户中的某个 AWS 服务 发出一个事件时，它始终会发送到您账户的默认事件总线。

1. （可选）如果您不想立即运行所选总线上的规则，请关闭该规则。

1. 对于**规则类型**，选择**具有事件模式的规则**。

1. 选择**下一步**。

1. 对于**事件源**，选择 **AWS 事件或 EventBridge 合作伙伴事件**。

1. （可选）对于**示例事件**：

   1. 对于**示例事件类型**，选择** AWS 事件**。

   1. 对于**示例事件**，选择**批处理作业状态更改**。

1. 对于**创建方法**，选择**使用模式表单**。

1. 对于**事件模式**：

   1. 对于**事件源**，选择 **AWS 服务**。

   1. 对于 **AWS 服务**，选择**批处理**。

   1. 对于**事件类型**，选择**批量作业状态更改**。

1. 选择**下一步**。

1. 对于 **Target types**（目标类型），选择 **AWS 服务**。

1. 在**选择目标**中，选择目标类型。例如，选择**批处理作业队列**。然后指定以下内容：
   + **Job queue**（作业队列）：输入您在其中计划作业的作业队列的 Amazon 资源名称（ARN）。
   + **Job definition** (任务定义)：输入要用于任务的任务定义的名称和版本或完整 ARN。
   + **Job name** (任务名称)：输入您的任务的名称。
   + **Array size** (数组大小)：(可选) 输入要运行多个副本的任务的数组大小。有关更多信息，请参阅 [数组作业](array_jobs.md)。
   + **Job attempts** (任务尝试次数)：(可选) 输入任务失败时重试的次数。有关更多信息，请参阅 [自动作业重试](job_retries.md)。

1. 对于 **Batch job queue**（批处理作业队列）目标类型，EventBridge 需要权限才能将事件发送到目标。EventBridge 可以创建运行事件所需的 IAM 角色。请执行以下操作之一：
   + 要自动创建 IAM 角色，请选择**为此特定资源创建新角色**。
   + 要使用您之前创建的 IAM 角色，请选择**使用现有角色**。

1. （可选）展开 **Additional settings (其他设置)**。

   1. 在**配置目标输入**中，选择如何处理事件中的文本。

   1. 对于**事件的最大期限**，请指定未处理事件保留多长时间的时间间隔。

   1. 对于**重试次数**，请输入事件的重试次数。

   1. 对于**死信队列**，选择一个选项来说明如何处理未处理的事件。如有必要，指定要用作死信队列的 Amazon SQS 队列。

1. （可选）选择 **添加其他目标**，以添加其他目标。

1. 选择**下一步**。

1. （可选）在**标签**中，选择**添加新标签**以添加资源标签。有关更多信息，请参阅《Amazon EventBridge 用户指南》**中的 [Amazon EventBridge 标签](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)。

1. 选择**下一步**。

1. 对于**查看和创建**，请查看配置步骤。如果需要进行更改，请选择 **Edit**（编辑）。完成后，选择**创建规则**。

   要了解如何创建规则的更多信息，请参阅*Amazon EventBridge 用户指南*中的[创建对事件作出反应的 Amazon EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)。

# 教程：使用 EventBridge 输入变压器按计划将事件信息传递给 AWS Batch 目标
<a name="cwe-input-transformer"></a>

在作业提交中，您可以使用 EventBridge 输入转换器将 AWS Batch 事件信息传递给。如果您因其他 AWS 事件信息而调用作业，则这可能特别有用。例如，将文件元上载到 Amazon S3 存储桶。您还可以在容器的命令中使用带有参数替换值的作业定义。 EventBridge 输入变压器可以根据事件数据提供参数值。

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

**注意**  
在这种情况下，所有 AWS 资源（例如 Amazon S3 存储桶、 EventBridge 规则和 CloudTrail日志）必须位于同一个区域。

**创建使用输入变压器的 AWS Batch 目标**

1. 打开亚马逊 EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)。

1. 在导航栏中，选择 AWS 区域 要使用的。

1. 在导航窗格中，选择**规则**。

1. 选择**创建规则**。

1. 对于**名称**，为计算环境指定唯一名称。名称最多可以包含 64 个字符。可以包含大小写字母、数字、连字符（-）和下划线（\$1）。
**注意**  
一条规则不能与同一事件总线上的另一条规则同名。 AWS 区域 

1. （可选）对于**描述**，输入规则的描述。

1. 对于**事件总线**，请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发，请选择**默认**。当你账户 AWS 服务 中的某人发出事件时，它总是会进入你账户的默认事件总线。

1. （可选）如果您不想立即运行所选总线上的规则，请关闭该规则。

1. 对于 **Rule type**（规则类型），选择 **Schedule**（计划）。

1. 选择**继续创建规则**，或者选择**下一步**。

1. 对于 **Schedule pattern**（计划模式），执行以下操作之一：
   + 选择**在特定时间（例如上午 8:00）运行的精细计划。每月第一个星期一，太平洋标准时间**，然后输入 cron 表达式。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的 [Cron 表达式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html#eb-cron-expressions)。
   + 选择**以常规速率运行的计划，例如每 10 分钟**，然后输入 rate 表达式。

1. 选择**下一步**。

1. 对于 **Target types**（目标类型），选择 **AWS 服务**。

1. 在**选择目标**中，选择**批处理作业队列**。然后，进行以下配置：
   + **Job queue**（作业队列）：输入您在其中计划作业的作业队列的 Amazon 资源名称（ARN）。
   + **Job definition** (任务定义)：输入要用于任务的任务定义的名称和版本或完整 ARN。
   + **Job name** (任务名称)：输入您的任务的名称。
   + **Array size** (数组大小)：(可选) 输入要运行多个副本的任务的数组大小。有关更多信息，请参阅 [数组作业](array_jobs.md)。
   + **Job attempts** (任务尝试次数)：(可选) 输入任务失败时重试的次数。有关更多信息，请参阅 [自动作业重试](job_retries.md)。

1. 对于 **Batch 作业队列**目标类型， EventBridge 需要向目标发送事件的权限。 EventBridge 可以创建规则运行所需的 IAM 角色。请执行以下操作之一：
   + 若要自动创建 IAM 角色，请选择 **Create a new role for this specific resource（为此特定资源创建新角色）**。
   + 要使用您已经创建的 IAM 角色，请选择 **使用现有角色**。

1. （可选）展开**其他设置**。

1. 在 **Additional settings**（其他设置）部分，对于 **Configure target input**（配置目标输入），请选择 **Input Transformer**（输入转换器）。

1. 选择 **Configure input transformer**（配置输入转换器）。

1. （可选）对于**示例事件**：

   1. 对于**示例事件类型**，选择**AWS 事件**。

   1. 对于**示例事件**，选择**批处理作业状态更改**。

1. 在 **Target input transformer**（目标输入转换器）部分，对于 **Input path**（输入路径），请指定要从触发事件中解析的值。例如，要解析**批处理作业状态更改**事件，请使用以下 JSON 格式。

   ```
   {
       "instance": "$.detail.jobId",
       "state": "$.detail.status"
   }
   ```

1. 对于**模板正文**，输入以下模板：

   ```
   {
       "instance": <jobId> ,
       "status": <status>
   }
   ```

1. 选择**确认**。

1. 对于**事件的最大期限**，请指定未处理事件保留多长时间的时间间隔。

1. 对于**重试次数**，请输入事件的重试次数。

1. 对于**死信队列**，选择一个选项来说明如何处理未处理的事件。如有必要，指定要用作死信队列的 Amazon SQS 队列。

1. （可选）选择 **添加其他目标**，以添加其他目标。

1. 选择**下一步**。

1. （可选）在**标签**中，选择**添加新标签**以添加资源标签。有关更多信息，请参阅《[亚马逊* EventBridge 用户指南》中的亚马逊 EventBridge *标签](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)。

1. 选择**下一步**。

1. 对于**查看和创建**，请查看配置步骤。如果需要进行更改，请选择 **Edit**（编辑）。完成后，选择 **创建规则**。