

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

# 教程：针对作业失败事件发送 Amazon Simple Notification Service 警报
<a name="batch_sns_tutorial"></a>

在本教程中，您将配置 Amazon EventBridge 事件规则，它只捕获作业已转为 `FAILED` 状态的作业事件。在本教程结束时，您还可以选择向该作业队列提交作业。这是为了测试您是否正确配置了您的 Amazon SNS 提醒。

## 先决条件
<a name="batch_sns_prereq"></a>

本教程假定您具备可正常工作的计算环境和作业队列，随时可以接受作业。如果您没有要从中捕获事件的正在运行的计算环境和作业队列，请执行[AWS Batch 教程入门](Batch_GetStarted.md)中的步骤创建一个。

**Topics**
+ [先决条件](#batch_sns_prereq)
+ [教程：创建并订阅 Amazon SNS 主题](batch_sns_create_topic.md)
+ [教程：注册事件规则](batch_sns_reg_rule.md)
+ [教程：测试您的规则](batch_sns_test_rule.md)
+ [替代规则：Batch 作业队列被阻止](#test_blocked_job_queue)

# 教程：创建并订阅 Amazon SNS 主题
<a name="batch_sns_create_topic"></a>

 在本教程中，您配置一个 Amazon SNS 主题来充当新事件规则的事件目标。

**创建 Amazon SNS 主题**

1. 通过 [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home) 打开 Amazon SNS 控制台。

1. 依次选择 **Topics (主题)** 和 **Create topic (创建主题)**。

1. 对于**类型**，选择**标准**。

1. 对于**名称**，输入 **JobFailedAlert** 并选择**创建主题**。

1. 在 **JobFailedAlert** 屏幕上，选择 **创建订阅**。

1. 对于**协议**，选择**电子邮件**。

1. 对于**端点**，输入您当前有权访问的电子邮件地址，然后选择 **创建订阅**。

1. 检查您的电子邮件账户，并等待接收订阅确认电子邮件。在收到此电子邮件后，选择 **确认订阅**。

# 教程：注册事件规则
<a name="batch_sns_reg_rule"></a>

 接下来，注册一个仅捕获作业失败事件的事件规则。

**注册您的 EventBridge 规则**

1. 打开位于 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 的 Amazon EventBridge 控制台。

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

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

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

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

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

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

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

1. 对于**事件源**，选择**其他**。

1. 对于**事件模式**，选择 **自定义模式（JSON 编辑器）**。

1. 在文本区域中粘贴以下事件模式。

   ```
   {
     "detail-type": [
       "Batch Job State Change"
     ],
     "source": [
       "aws.batch"
     ],
     "detail": {
       "status": [
         "FAILED"
       ]
     }
   }
   ```

   此代码定义一个与作业状态为 `FAILED` 的任何事件匹配的 EventBridge 事件规则。有关事件模式的更多信息，请参阅 *Amazon EventBridge 用户指南* 中的 [事件和事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)。

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

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

1. 对于 **选择目标**，选择 **SNS 主题**；对于 **主题**，选择**JobFailedAlert**。

1. （可选）对于 **Additional settings**（其他设置），执行以下操作：

   1. 对于 **Maximum age of event**（事件的最大时长），输入一分钟（00:01）与 24 小时（24:00）之间的值。

   1. 对于**重试尝试**，输入 0 到 185 之间的数字。

   1. 对于**死信队列**，选择是否使用标准 Amazon SQS 队列作为死信队列。如果与此规则匹配的事件未成功传递到目标，EventBridge 会将这些事件发送到死信队列。请执行以下操作之一：
      + 选择**无**不使用死信队列。
      + 选择**在当前 AWS 账户中选择一个 Amazon SQS 队列用作死信队列**，然后从下拉列表中选择要使用的队列。
      + 选择**在其他 Amazon SQS 队列中选择其他队列 AWS 帐户作为死信队列**，然后输入要使用的队列的 ARN。您必须将基于资源的策略附加到队列，以授予 EventBridge 向其发送消息的权限。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[授予死信队列的权限](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html#eb-dlq-perms)。

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

1. （可选）为规则输入一个或多个标签。有关更多信息，请参阅《Amazon EventBridge 用户指南》**中的 [Amazon EventBridge 标签](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)。

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

1. 查看规则详细信息并选择**创建规则**。

# 教程：测试您的规则
<a name="batch_sns_test_rule"></a>

要测试您的规则，请提交一个在启动后很快就以非零退出代码退出的作业。如果您的事件规则配置正确，您将在几分钟内收到包含事件文本的电子邮件消息。

**测试规则**

1. 打开AWS Batch控制台，地址：[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 提交新的 AWS Batch 作业。有关更多信息，请参阅 [教程：提交作业](submit_job.md)。对于作业的命令，替换为以下命令，以退出代码 1 退出容器。

   ```
   /bin/sh, -c, 'exit 1'
   ```

1. 查看您的电子邮件以确认您已收到失败作业通知的电子邮件提醒。

## 替代规则：Batch 作业队列被阻止
<a name="test_blocked_job_queue"></a>

要创建监控*批处理作业队列被阻止*的事件规则，请重复这些教程，并进行以下更改：

1. **在 [教程：创建并订阅 Amazon SNS 主题](batch_sns_create_topic.md) 中**，使用 *BlockedJobQueue* 作为主题名称。

1. **在 [教程：注册事件规则](batch_sns_reg_rule.md) 中**，在 JSON 编辑器中使用以下模式：

   ```
   {
      "detail-type": [
        "Batch Job Queue Blocked"
      ],
      "source": [
        "aws.batch"
      ]
   }
   ```