

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：設定 CloudWatch Events 規則以接收管道狀態變更的電子郵件通知
<a name="tutorials-cloudwatch-sns-notifications"></a>

在 中設定管道之後 AWS CodePipeline，您可以設定 CloudWatch Events 規則，以便在管道的執行狀態變更時，或在管道的階段或動作中傳送通知。如需使用 CloudWatch Events 設定管道狀態變更通知的詳細資訊，請參閱 [監控 CodePipeline 事件](detect-state-changes-cloudwatch-events.md)。

在本教學中，您會設定通知，在管道狀態變更為 FAILED (失敗) 時傳送電子郵件。本教學課程在建立 CloudWatch Events 規則時使用輸入轉換器方法。它會將訊息結構描述詳細資訊轉換成可供人閱讀的文字訊息。

**注意**  
當您建立本教學課程的資源時，例如 Amazon SNS 通知和 CloudWatch Events 規則，請確定在 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 Events 規則的目標。如需詳細資訊，請參閱《[Amazon Simple Notification Service 開發人員指南](https://docs.aws.amazon.com/sns/latest/dg/)》。

在 Amazon SNS 中建立或識別主題。CodePipeline 將使用 CloudWatch Events 透過 Amazon SNS 傳送通知至此主題。建立主題：

1. 開啟位於 https：//[https://console.aws.amazon.com/sns](https://console.aws.amazon.com/sns) 的 Amazon SNS 主控台。

1. 請選擇**建立主題**。

1. 在 **Create new topic (建立新主題)** 對話方塊中，針對 **Topic name (主題名稱)**，輸入主題的名稱 (例如 **PipelineNotificationTopic**)。  
![\[使用 Amazon SNS 建立通知主題。\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/tutorial-SNS-topic.png)

1. 請選擇**建立主題**。

   如需詳細資訊，請參閱《*Amazon SNS 開發人員指南*》中的[建立主題](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。

讓一或多個收件人訂閱主題來接收電子郵件通知。讓收件人訂閱主題：

1. 在 Amazon SNS 主控台**的主題**清單中，選取新主題旁的核取方塊。選擇 **​Actions, Subscribe to topic (動作、訂閱主題)**。

1. 在 **​Create subscription (建立訂閱)** 對話方塊中，確認 ARN 有出現在 **​Topic ARN (主題 ARN)** 中。

1. 對於**通訊協定**，選擇**電子郵件**。

1. 針對 **​Endpoint (端點)**，輸入收件人的完整電子郵件地址。

1. 選擇 **Create Subscription** (建立訂閱)。

1. Amazon SNS 會傳送訂閱確認電子郵件給收件人。若要接收電子郵件通知，收件人必須選擇此電子郵件中的 **​Confirm subscription (確認訂閱)** 連結。收件人按一下連結後，如果成功訂閱，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 Events 通知規則。

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Events (事件)**。

1. 選擇**建立規則**。在 **​Event source (事件來源)** 下，選擇 **AWS CodePipeline**。針對**事件類型**，選擇**管道執行狀態變更**。

1. 選擇 **​Specific state(s) (特定狀態)**，然後選擇 **FAILED**。

1. 選擇 **​Edit (編輯)**，開啟 **Event Pattern Preview (事件模式預覽)** 窗格的 JSON 編輯器。使用您管道的名稱新增 **pipeline** 參數，如下列名為 "myPipeline" 管道的範例所示。

   您可以複製此處的事件模式並將其貼到主控台中：

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

1. 在 **Targets** (目標) 中，選擇 **Add target (新增目標)**。

1. 在目標清單中，選擇 **​SNS topic (SNS 主題)**。針對 **​Topic (主題)**，輸入您建立的主題。

1. 展開 **​Configure input (設定輸入)**，然後選擇 **​Input Transformer (輸入轉換器)**。

1. 在 **​Input Path (輸入路徑)** 方塊中，輸入下列鍵/值對。

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

   在 **​Input Template (輸入範本)** 方塊中，輸入下列內容：

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

1. 選擇**設定詳細資訊**。

1. 在 **​Configure rule details (設定規則詳細資訊)** 頁面上，輸入名稱及選擇性描述。針對 **​State (狀態)**，將 **​Enabled (啟用)** 保留在選取狀態。

1. 選擇**建立規則**。

1. 確認 CodePipeline 現在正在傳送建置通知。例如，檢查您的收件匣中是否有組建通知電子郵件。

1. 若要變更規則的行為，請在 CloudWatch 主控台中選擇規則，然後選擇**動作**、**編輯**。編輯規則，選擇 **​Configure details (設定詳細資訊)**，然後選擇 **​Update rule (更新規則)**。

   若要停止使用規則來傳送建置通知，請在 CloudWatch 主控台中選擇規則，然後選擇**動作**、**停用**。

   若要刪除規則，請在 CloudWatch 主控台中選擇規則，然後選擇**動作**、**刪除**。

## 步驟 3：清除資源
<a name="notifications-clean-up-resources"></a>

在您完成本教學之後，您應該刪除管道以及其所使用的資源，如此您才不會因為持續使用那些資源而付費。

如需有關如何清除 SNS 通知和刪除 Amazon CloudWatch Events 規則的資訊，請參閱《Amazon CloudWatch Events API 參考`DeleteRule`》中的[清除 （取消訂閱 Amazon SNS 主題）](https://docs.aws.amazon.com/sns/latest/dg/CleanUp.html) 和參考。 [Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatchEvents/latest/APIReference/)