

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

# 建立 CodeDeploy 事件的觸發
<a name="monitoring-sns-event-notifications-create-trigger"></a>

您可以建立針對部署或執行個體事件發佈 Amazon Simple Notification Service (Amazon SNS) 主題的 AWS CodeDeploy 觸發。然後，當該事件發生時，關聯主題的所有訂閱者都會透過主題中指定的端點接收通知，例如簡訊或電子郵件訊息。Amazon SNS 提供多種訂閱主題的方法。

建立觸發條件之前，您必須設定觸發條件指向的 Amazon SNS 主題。如需詳細資訊，請參閱[建立主題](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。當您建立主題時，建議您以 `Topic-group-us-west-3-deploy-fail`或 等格式提供可識別其用途的名稱`Topic-group-project-2-instance-stop`。

您還必須將 Amazon SNS 許可授予 CodeDeploy 服務角色，才能傳送觸發條件的通知。如需相關資訊，請參閱[將 Amazon SNS 許可授予 CodeDeploy 服務角色](monitoring-sns-event-notifications-permisssions.md)。

在您建立主題後，可以開始新增訂閱者。如需有關建立、管理和訂閱主題的資訊，請參閱[什麼是 Amazon Simple Notification Service](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)。



## 建立觸發以傳送 CodeDeploy 事件的通知 （主控台）
<a name="monitoring-sns-event-notifications-create-trigger-console"></a>

您可以使用 CodeDeploy 主控台為 CodeDeploy 事件建立觸發。在設定程序結束時，系統會傳送測試通知訊息，藉此確認是否正確設定許可與觸發條件的詳細資訊。

**為 CodeDeploy 事件建立觸發**

1. 在 中 AWS 管理主控台，開啟 AWS CodeDeploy 主控台。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**應用程式**。

1. 在 **Applications (應用程式)** 頁面上，選擇與您要新增觸發之部署群組建立關聯的應用程式名稱。

1. 在 **Application details (應用程式詳細資訊)** 頁面上，選擇您要新增觸發的部署群組。

1.  選擇**編輯**。

1.  展開 **Advanced - optional (進階 - 選用)**。

1.  在 **Triggers (觸發)** 區域中，選擇 **Create trigger (建立觸發)**。

1. 在 **Create deployment trigger (建立部署觸發)** 窗格中，執行下列動作：

   1. 在 **Trigger name (觸發名稱)** 中，輸入可輕鬆識別用途的觸發名稱。建議使用 `Trigger-group-us-west-3-deploy-fail` 或 `Trigger-group-eu-central-instance-stop` 這類格式。

   1. 在**事件**中，選擇要觸發 Amazon SNS 主題傳送通知的事件類型。

   1. 在 **Amazon SNS 主題**中，選擇您為傳送此觸發條件通知而建立的主題名稱。

   1.  選擇 **Create trigger (建立觸發)**。CodeDeploy 會傳送測試通知，以確認您已正確設定 CodeDeploy 與 Amazon SNS 主題之間的存取權。根據您針對主題所選取的端點類型，且您已訂閱該主題時，會在 SMS 訊息或電子郵件訊息中收到確認訊息。

1.  選擇**儲存變更**。

## 建立觸發以傳送 CodeDeploy 事件 (CLI) 的通知
<a name="monitoring-sns-event-notifications-create-trigger-cli"></a>

您可以使用 CLI，在建立部署群組時包含觸發，也可以將觸發新增至現有部署群組。

### 建立觸發以傳送新部署群組的通知
<a name="monitoring-sns-event-notifications-create-trigger-cli-new"></a>

建立 JSON 檔案來設定部署群組，然後使用 `--cli-input-json`選項執行 [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 命令。

建立 JSON 檔案的最簡單方法是使用 `--generate-cli-skeleton` 選項取得 JSON 格式的複本，然後使用純文字編輯器提供必要值。

1. 執行下列命令，然後將結果複製至純文字編輯器。

   ```
   aws deploy create-deployment-group --generate-cli-skeleton
   ```

1. 將現有 CodeDeploy 應用程式的名稱新增至輸出：

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentGroupName": "",
       "deploymentConfigName": "",
       "ec2TagFilters": [
           {
               "Key": "",
               "Value": "",
               "Type": ""
           }
       ],
       "onPremisesInstanceTagFilters": [
           {
               "Key": "",
               "Value": "",
               "Type": ""
           }
       ],
       "autoScalingGroups": [
           ""
       ],
       "serviceRoleArn": "",
       "triggerConfigurations": [
           {
               "triggerName": "",
               "triggerTargetArn": "",
               "triggerEvents": [
                   ""
               ]
           }
       ]
   }
   ```

1. 提供您要設定之參數的值。

   當您使用 [create-deployment-group](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeploymentGroup.html) 命令時，必須至少提供下列參數的值：
   + `applicationName`：已在您帳戶中建立的應用程式名稱。
   + `deploymentGroupName`：您將建立的部署群組名稱。
   + `serviceRoleArn`：您帳戶中為 CodeDeploy 設定的現有服務角色的 ARN。如需相關資訊，請參閱[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。

   在 `triggerConfigurations` 區段中，提供下列參數的值：
   + `triggerName`：為您的觸發名稱命名，方便您識別。建議使用 `Trigger-group-us-west-3-deploy-fail` 或 `Trigger-group-eu-central-instance-stop` 這類格式。
   + `triggerTargetArn`：您建立以與觸發關聯之 Amazon SNS 主題的 ARN，格式如下：`arn:aws:sns:us-east-2:444455556666:NewTestTopic`。
   + `triggerEvents`：您要觸發通知的一或多種事件類型。您可以指定一或多種事件類型，以逗號分隔多個事件類型名稱 (例如，`"triggerEvents":["DeploymentSuccess","DeploymentFailure","InstanceFailure"]`)。當您新增多種事件類型時，所有這些類型的通知都會傳送至您指定的主題，而不是每種類型的不同主題。您可以從下列事件類型來選擇：
     + DeploymentStart
     + DeploymentSuccess
     + DeploymentFailure
     + DeploymentStop
     + DeploymentRollback
     + DeploymentReady (僅適用於藍/綠部署中的替換執行個體)
     + InstanceStart
     + InstanceSuccess
     + InstanceFailure
     + InstanceReady (僅適用於藍/綠部署中的替換執行個體)

   下列組態範例會針對名為 `TestApp-us-east-2` 的應用程式建立名為 `dep-group-ghi-789-2` 的部署群組，以及只要部署開始、成功或失敗就提示傳送通知的觸發：

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentConfigName": "CodeDeployDefault.OneAtATime",
       "deploymentGroupName": "dep-group-ghi-789-2",
       "ec2TagFilters": [
           {
               "Key": "Name",
               "Value": "Project-ABC",
               "Type": "KEY_AND_VALUE"
           }
       ],
       "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role",
       "triggerConfigurations": [
           {
               "triggerName": "Trigger-group-us-east-2",
               "triggerTargetArn": "arn:aws:sns:us-east-2:444455556666:us-east-deployments",
               "triggerEvents": [
                   "DeploymentStart",
                   "DeploymentSuccess",
                   "DeploymentFailure"
               ]
           }
       ]
   }
   ```

1. 將更新儲存為 JSON 檔案，然後在您執行 **create-deployment-group** 命令時，使用 `--cli-input-json` 選項呼叫該檔案：
**重要**  
請確認在檔案名稱之前包含 `file://`。這是此命令必要項目。

   ```
   aws deploy create-deployment-group --cli-input-json file://filename.json
   ```

   在建立程序結束時，您會收到測試通知訊息，指出同時正確設定許可和觸發詳細資訊。

### 建立觸發以傳送現有部署群組的通知
<a name="monitoring-sns-event-notifications-create-trigger-cli-existing"></a>

若要使用 AWS CLI 將 CodeDeploy 事件的觸發條件新增至現有的部署群組，請建立 JSON 檔案來更新部署群組，然後使用 `--cli-input-json`選項執行 [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 命令。

建立 JSON 檔案的最簡單方法是執行 **get-deployment-group** 命令，取得 JSON 格式的部署群組組態複本，然後使用純文字編輯器更新參數值。

1.  執行下列命令，然後將結果複製至純文字編輯器。

   ```
   aws deploy get-deployment-group --application-name application --deployment-group-name deployment-group
   ```

1. 刪除輸出中的下列內容：
   + 在輸出的開頭，刪除 `{ "deploymentGroupInfo":`。
   + 在輸出的結尾，刪除 `}`。
   + 刪除含有 `deploymentGroupId` 的資料列。
   + 刪除含有 `deploymentGroupName` 的資料列。

   文字檔案的內容現在應該與下面類似：

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentConfigName": "CodeDeployDefault.OneAtATime",
       "autoScalingGroups": [],
       "ec2TagFilters": [
           {
               "Type": "KEY_AND_VALUE",
               "Value": "Project-ABC",
               "Key": "Name"
           }
       ],
       "triggerConfigurations": [],
       "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role",
       "onPremisesInstanceTagFilters": []
   }
   ```

1. 在 `triggerConfigurations` 區段中，新增 `triggerEvents`、`triggerTargetArn` 和 `triggerName` 參數的資料。如需觸發組態參數的資訊，請參閱 [TriggerConfig](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_TriggerConfig.html)。

   文字檔案的內容現在應該與下面類似。只要部署開始、成功或失敗，此程式碼就會提示傳送通知。

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentConfigName": "CodeDeployDefault.OneAtATime",
       "autoScalingGroups": [],
       "ec2TagFilters": [
           {
               "Type": "KEY_AND_VALUE",
               "Value": "Project-ABC",
               "Key": "Name"
           }
       ],
       "triggerConfigurations": [
           {
               "triggerEvents": [
                   "DeploymentStart",
                   "DeploymentSuccess",
                   "DeploymentFailure"
               ],
               "triggerTargetArn": "arn:aws:sns:us-east-2:444455556666:us-east-deployments",
               "triggerName": "Trigger-group-us-east-2"
           }
       ],
       "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role",
       "onPremisesInstanceTagFilters": []
   }
   ```

1. 將您的更新儲存為 JSON 檔案，然後使用 `--cli-input-json`選項執行 [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 命令。請務必包含 `--current-deployment-group-name` 選項，並將 *filename* 替代為您 JSON 檔案的名稱：
**重要**  
請確認在檔案名稱之前包含 `file://`。這是此命令必要項目。

   ```
   aws deploy update-deployment-group --current-deployment-group-name deployment-group-name --cli-input-json file://filename.json
   ```

   在建立程序結束時，您會收到測試通知訊息，指出同時正確設定許可和觸發詳細資訊。