

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

# 教程：设置 CloudWatch 事件规则以接收有关管道状态更改的电子邮件通知
<a name="tutorials-cloudwatch-sns-notifications"></a>

在中设置管道后 AWS CodePipeline，您可以设置 CloudWatch 事件规则，以便在管道的执行状态或管道中的阶段或操作发生变化时发送通知。有关使用 CloudWatch 事件设置管道状态更改通知的更多信息，请参阅[监控 CodePipeline 事件](detect-state-changes-cloudwatch-events.md)。

在本教程中，您配置一个通知以在管道状态变为 FAILED 时发送电子邮件。本教程在创建 CloudWatch 事件规则时使用输入转换器方法。它转换消息架构详细信息以在用户可读的文本中传送消息。

**注意**  
在为本教程创建资源（例如 Amazon SNS 通知和 CloudWatch 事件规则）时，请确保在与您的管道相同的 AWS 区域创建这些资源。

**Topics**
+ [步骤 1：使用 Amazon SNS 设置电子邮件通知](#create-filter-for-target)
+ [步骤 2：创建规则并将 SNS 主题添加为目标](#create-notification-rule)
+ [步骤 3：清理资源](#notifications-clean-up-resources)

## 步骤 1：使用 Amazon SNS 设置电子邮件通知
<a name="create-filter-for-target"></a>

Amazon SNS 协调使用的主题以将消息传送到订阅端点或客户端。可以使用 Amazon SNS 创建一个通知主题，然后使用您的电子邮件地址订阅该主题。Amazon SNS 主题将作为目标添加到您的 CloudWatch 事件规则中。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》[https://docs.aws.amazon.com/sns/latest/dg/](https://docs.aws.amazon.com/sns/latest/dg/)。

在 Amazon SNS 中创建或标识主题。 CodePipeline 将使用 CloudWatch 活动通过 Amazon SNS 向该主题发送通知。要创建主题，请执行以下操作:

1. [在 /sns 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/sns)

1. 选择**创建主题**。

1. 在 **Create new topic (创建新主题)** 对话框中，为 **Topic name (主题名称)** 键入主题名（例如 **PipelineNotificationTopic**）。  
![\[使用 Amazon SNS 创建通知主题。\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/tutorial-SNS-topic.png)

1. 选择**创建主题**。

   有关更多信息，请参阅 *Amazon SNS 开发者指南* 中的[创建主题](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。

为一个或多个收件人订阅主题以接收电子邮件通知。为收件人订阅主题：

1. 在 Amazon SNS 控制台中，从**主题**列表中，选中新主题旁边的复选框。选择**操作**，然后选择“订阅主题”。

1. 在**创建订阅**对话框中，确认在**主题 ARN** 中显示一个 ARN。

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

1. 对于**终端节点**，请键入收件人的完整电子邮件地址。

1. 选择**创建订阅**。

1. Amazon SNS 向收件人发送订阅确认电子邮件。要接收电子邮件通知，收件人必须在该电子邮件中选择**确认订阅**链接。在收件人单击该链接后，如果成功订阅，Amazon SNS 将在收件人的 Web 浏览器中显示一条确认消息。

   有关更多信息，请参阅 *Amazon SNS 开发者指南* 中的[订阅主题](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html)。

## 步骤 2：创建规则并将 SNS 主题添加为目标
<a name="create-notification-rule"></a>

创建以 CodePipeline 作为 CloudWatch 事件源的事件通知规则。

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择 **Events（事件）**。

1. 选择 **Create rule**（创建规则）。在**事件源**下面，选择 **AWS CodePipeline**。对于**事件类型**，请选择**管道执行状态更改**。

1. 选择**特定状态**，然后选择 **FAILED**。

1. 对于**事件模式预览**窗格，请选择**编辑**以打开 JSON 编辑器。添加 **pipeline** 参数以及管道名称，如以下示例中名为“myPipeline”的管道所示。

   您可以复制此处的事件模式并将其粘贴到控制台中：

   ```
   {
     "source": [
       "aws.codepipeline"
     ],
     "detail-type": [
       "CodePipeline Pipeline Execution State Change"
     ],
     "detail": {
       "state": [
         "FAILED"
       ],
       "pipeline": [
         "myPipeline"
       ]
     }
   }
   ```

1. 对于**目标**，选择**添加目标**。

1. 在目标列表中，选择 **SNS 主题**。对于**主题**，请输入刚创建的主题。

1. 展开**配置输入**，然后选择**输入转换器**。

1. 在**输入路径**框中，键入以下键值对。

   ```
   { "pipeline" : "$.detail.pipeline" }
   ```

   在**输入模板**框中，键入以下内容：

   ```
   "The Pipeline <pipeline> has failed."
   ```

1. 选择 **Configure details（配置详细信息）**。

1. 在**配置规则详细信息**页中，键入一个名称和可选的描述。对于**状态**，请将**已启用**框保持选中状态。

1. 选择 **Create rule**（创建规则）。

1. 确认现在 CodePipeline 正在发送构建通知。例如，检查您的收件箱中现在是否有构建通知电子邮件。

1. 要更改规则的行为，请在 CloudWatch 控制台中选择规则，然后选择**操作**、**编辑**。编辑该规则，选择**配置详细信息**，然后选择**更新规则**。

   要停止使用规则发送生成通知，请在 CloudWatch 控制台中选择规则，然后选择**操作**，**禁用**。

   要删除规则，请在 CloudWatch 控制台中选择规则，然后选择**操作**，**删除**。

## 步骤 3：清理资源
<a name="notifications-clean-up-resources"></a>

完成本教程之后，您应该删除管道及其使用的资源，以避免为继续使用这些资源付费。

[有关如何清理 SNS 通知和删除亚马逊 CloudWatch 事件规则的信息，请参阅[清理（取消订阅亚马逊 SNS 主题）和《亚马逊](https://docs.aws.amazon.com/sns/latest/dg/CleanUp.html)活动 API 参考》`DeleteRule`中的参考资料。 CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatchEvents/latest/APIReference/)