

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

# 使用 Amazon CloudWatch 工具監控部署
<a name="monitoring-cloudwatch"></a>

您可以使用下列 CloudWatch 工具監控 CodeDeploy 部署：Amazon CloudWatch Events、CloudWatch 警示和 Amazon CloudWatch Logs。

檢閱 CodeDeploy 代理程式和部署建立的日誌可協助您疑難排解部署失敗的原因。除了一次檢閱一個執行個體上的 CodeDeploy 日誌，您也可以使用 CloudWatch Logs 來監控中央位置的所有日誌。

如需有關使用 CloudWatch 警示和 CloudWatch Events 監控 CodeDeploy 部署的資訊，請參閱下列主題。

**Topics**
+ [在 CodeDeploy 中使用 CloudWatch 警示監控部署](monitoring-create-alarms.md)
+ [使用 Amazon CloudWatch Events 監控部署](monitoring-cloudwatch-events.md)

# 在 CodeDeploy 中使用 CloudWatch 警示監控部署
<a name="monitoring-create-alarms"></a>

您可以為您在 CodeDeploy 操作中使用的執行個體或 Amazon EC2 Auto Scaling 群組建立 CloudWatch 警示。警示會監看所指定時段內的單一指標，並根據與多個時段內給定閾值相對的指標值來執行一或多個動作。CloudWatch 警示會在狀態變更時叫用動作 （例如，從 `OK`變更為 `ALARM`)。

使用原生 CloudWatch 警示功能，您可以在部署中使用的執行個體失敗時指定 CloudWatch 支援的任何動作，例如傳送 Amazon SNS 通知或停止、終止、重新啟動或復原執行個體。對於 CodeDeploy 操作，您可以設定部署群組，以便在啟用與部署群組建立關聯的任何 CloudWatch 警示時停止部署。

您最多可以將十個 CloudWatch 警示與 CodeDeploy 部署群組建立關聯。如果任何指定的警示已啟動、部署停止、且狀態已更新為停用。若要使用此選項，您必須將 CloudWatch 許可授予 CodeDeploy 服務角色。

如需有關在 CloudWatch 主控台中設定 CloudWatch 警示的資訊，請參閱《[Amazon CloudWatch 使用者指南》中的建立 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/AlarmThatSendsEmail.html)。 *Amazon CloudWatch *

如需有關將 CloudWatch 警示與 CodeDeploy 中的部署群組建立關聯的資訊，請參閱 [使用 CodeDeploy 建立部署群組](deployment-groups-create.md)和 [使用 CodeDeploy 變更部署群組設定](deployment-groups-edit.md)。

**Topics**
+ [將 CloudWatch 許可授予 CodeDeploy 服務角色](monitoring-create-alarms-grant-permissions.md)

# 將 CloudWatch 許可授予 CodeDeploy 服務角色
<a name="monitoring-create-alarms-grant-permissions"></a>

在您可以將 CloudWatch 警示監控與部署搭配使用之前，必須先授予您在 CodeDeploy 操作中使用的服務角色存取 CloudWatch 資源的許可。

**將 CloudWatch 許可授予服務角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**角色**。

1. 選擇您在 AWS CodeDeploy 操作中使用的服務角色名稱。

1. 在 **​Permissions (許可)** 標籤的 **​Inline Policies (內嵌政策)** 區域中，選擇 **​Create Role Policy (建立角色政策)**。

   –或–

   若 **​Create Role Policy (建立角色政策)** 按鈕無法使用，請展開 **​Inline Policies (內嵌政策)** 區域，然後選擇 **​click here (按一下這裡)**。

1. 在 **Set Permissions** (設定許可) 頁面上，選擇 **Custom Policy** (自訂政策)，然後選擇 **Select** (選取)。

1. 在 **​Review Policy (檢閱政策)** 頁面的 **​Policy Name (政策名稱)** 欄位中，輸入用以識別此政策的名稱，例如 `CWAlarms`。

1. 將下列內容貼入至 **​Policy Document (政策文件)** 欄位：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "cloudwatch:DescribeAlarms",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 選擇 **Apply Policy** (套用政策) 

# 使用 Amazon CloudWatch Events 監控部署
<a name="monitoring-cloudwatch-events"></a>

您可以使用 Amazon CloudWatch Events 來偵測和回應 CodeDeploy 操作中執行個體或部署 (「事件」) 狀態的變更。然後，根據您建立的規則，當部署或執行個體進入您在規則中指定的狀態時，CloudWatch Events 會叫用一或多個目標動作。根據狀態變更的類型，建議您傳送通知、擷取狀態資訊、採取修正動作、啟動事件，或採取其他動作。使用 CloudWatch Events 做為 CodeDeploy 操作的一部分時，您可以選取下列類型的目標：
+ AWS Lambda 函數
+  Kinesis 串流
+ Amazon SQS 佇列
+ 內建目標 (`EC2 CreateSnapshot API call`、、 `EC2 RebootInstances API call` `EC2 StopInstances API call` 和 `EC2 TerminateInstances API call`)
+ Amazon SNS 主題

下列為若干使用案例：
+ 當部署失敗時，使用 Lambda 函數傳送通知到 Slack 通道。
+ 推送部署或執行個體的資料到 Kinesis 串流以支援完整且即時的狀態監控。
+ 使用 CloudWatch 警示動作，在您指定的部署或執行個體事件發生時，自動停止、終止、重新啟動或復原 Amazon EC2 執行個體。

本主題的其餘部分說明為 CodeDeploy 建立 CloudWatch Events 規則的基本程序。不過，在建立事件規則以用於 CodeDeploy 操作之前，您應該執行下列動作：
+ 完成 CloudWatch Events 先決條件。如需詳細資訊，請參閱 [Amazon CloudWatch Events 先決條件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CWE_Prerequisites.html)。
+ 熟悉 CloudWatch Events 中的事件、規則和目標。如需詳細資訊，請參閱[什麼是 Amazon CloudWatch Events？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)和[新的 CloudWatch Events – 追蹤和回應 AWS 資源的變更](https://aws.amazon.com/blogs/aws/new-cloudwatch-events-track-and-respond-to-changes-to-your-aws-resources/)。
+ 建立您將在事件規則中使用的一或多個目標。

**若要為 CodeDeploy 建立 CloudWatch Events 規則：**

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

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

1. 選擇 **Create rule (建立規則)**，然後在 **Event selector (事件選擇器)** 下，選擇 **AWS CodeDeploy**。

1. 指定一種詳細資訊類型：
   + 若要建立應用在執行個體與部署的所有變更狀態的規則，請選擇 **Any detail type (任何詳細資訊型態)**，然後跳到步驟六。
   + 若要建立僅應用在執行個體的規則，請選擇 **Specific detail type (特定詳細資訊類型)**，然後選擇 **CodeDeploy Instance State-change Notification (CodeDeploy 執行個體狀態改變通知)**。
   + 若要建立僅應用在部署的規則，請選擇 **Specific detail type (特定詳細資訊類型)**，然後選擇**CodeDeploy Instance State-change Notification (CodeDeploy 執行個體狀態改變通知)**。

1. 指定規則套用至的狀態變更：
   + 若要建立應用至所有狀態變更的規則，請選擇 **Any state (任何狀態)**。
   + 若要建立僅應用至部分狀態變更的規則，請選擇 **Specific state(s) (特定狀態)**，然後從清單中選擇一個或多個狀態值。您可以選擇下表列出的狀態值，：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/monitoring-cloudwatch-events.html)

1. 指定套用規則的 CodeDeploy 應用程式：
   + 若要建立應用至所有應用程式的規則，請選擇 **Any application (任何應用程式)**，然後跳至步驟八。
   + 若要建立僅套用到單一個應用程式的規則，請選擇 **Specific application (指定應用程式)**，然後從清單中選擇此應用程式。

1. 指定部署群組的規則應用在：
   + 若要建立應用在與選定的應用程式相關之所有部署群組的規則，請選擇 **Any deployment group (任何部署群組)**。
   + 若要建立僅應用在與選定的應用程式相關的單一部署群組，請選擇 **Specific deployment group(s) (特定部署群組)**，然後從清單選擇此部署群組。

1. 檢閱您的規則設定，確定其符合您的事件監控要求。

1. 在 **Targets (目標)** 區域中選擇 **Add target\$1 (新增目標\$1)**。

1. 在 **Select target type** (選擇目標類型) 清單中，選擇您準備好使用此規則的目標類型，然後設定此類型所需的任何其他選項。

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

1. 在 **Configure rule details (設定規則詳細資訊)** 頁面上，輸入規則的名稱和描述，然後選取 **State (狀態)** 方塊啟用規則。

1. 如果您對此規則感到滿意，請選擇 **Create rule (建立規則)**。