建立 CodeDeploy 事件的觸發器 - AWS CodeDeploy

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

建立 CodeDeploy 事件的觸發器

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

在建立觸發器之前,您必須設定觸發器指向的 Amazon SNS 主題。如需相關資訊,請參閱建立主題。建立主題時,建議您以Topic-group-us-west-3-deploy-fail或等格式為其指定可識別其用途的名稱Topic-group-project-2-instance-stop

您還必須先將 Amazon SNS 許可授與 CodeDeploy 服務角色,才能針對觸發器傳送通知。如需相關資訊,請參閱 將 Amazon SNS 許可授與 CodeDeploy 服務角色

在您建立主題後,可以開始新增訂閱者。如需建立、管理和訂閱主題的相關資訊,請參閱什麼是 Amazon 簡單通知服務

建立觸發器以傳送 CodeDeploy 事件通知 (主控台)

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

若要建立 CodeDeploy 事件的觸發器
  1. 在 AWS Management Console中,開啟 AWS CodeDeploy 主控台。

  2. 請登入AWS Management Console並開啟 CodeDeploy 主控台,網址為 https://console.aws.amazon.com/codedeploy

    注意

    使用您設定的相同使用者登入開始使用 CodeDeploy

  3. 在瀏覽窗格中,展開 [部署],然後選擇 [應用程式]。

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

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

  6. 選擇 Edit (編輯)。

  7. 展開 Advanced - optional (進階 - 選用)

  8. Triggers (觸發) 區域中,選擇 Create trigger (建立觸發)

  9. Create deployment trigger (建立部署觸發) 窗格中,執行下列動作:

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

    2. 件中,選擇要觸發 Amazon SNS 主題以傳送通知的事件類型或類型。

    3. Amazon SNS 主題中,選擇您為傳送此觸發器通知所建立的主題名稱。

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

  10. 選擇 Save changes (儲存變更)。

建立觸發器以傳送 CodeDeploy 事件通知 (CLI)

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

建立觸發以傳送新部署群組的通知

建立 JSON 檔案以設定部署群組,然後使用--cli-input-json選項執行create-deployment-group命令。

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

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

    aws deploy create-deployment-group --generate-cli-skeleton
  2. 將現有 CodeDeploy 應用程序的名稱添加到輸出中:

    { "applicationName": "TestApp-us-east-2", "deploymentGroupName": "", "deploymentConfigName": "", "ec2TagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "onPremisesInstanceTagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "autoScalingGroups": [ "" ], "serviceRoleArn": "", "triggerConfigurations": [ { "triggerName": "", "triggerTargetArn": "", "triggerEvents": [ "" ] } ] }
  3. 提供您要設定之參數的值。

    使用指create-deployment-group令時,您必須至少提供下列參數的值:

    • applicationName:已在您帳戶中建立的應用程式名稱。

    • deploymentGroupName:您將建立的部署群組名稱。

    • serviceRoleArn:在您的帳戶 CodeDeploy 中設定的現有服務角色的 ARN。如需相關資訊,請參閱 步驟 2:建立服務角色 CodeDeploy

    triggerConfigurations 區段中,提供下列參數的值:

    • triggerName:為您的觸發名稱命名,方便您識別。建議使用 Trigger-group-us-west-3-deploy-failTrigger-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" ] } ] }
  4. 將更新儲存為 JSON 檔案,然後在您執行 create-deployment-group 命令時,使用 --cli-input-json 選項呼叫該檔案:

    重要

    請確認在檔案名稱之前包含 file://。這是此命令必要項目。

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

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

建立觸發以傳送現有部署群組的通知

若要使用AWS CLI將 CodeDeploy 事件觸發程序新增至現有部署群組,請建立 JSON 檔案以更新部署群組,然後使用--cli-input-json選項執行update-deployment-group命令。

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

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

    aws deploy get-deployment-group --application-name application --deployment-group-name deployment-group
  2. 刪除輸出中的下列內容:

    • 在輸出的開頭,刪除 { "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": [] }
  3. triggerConfigurations 區段中,新增 triggerEventstriggerTargetArntriggerName 參數的資料。如需有關觸發器組態參數的資訊,請參閱TriggerConfig

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

    { "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": [] }
  4. 將更新儲存為 JSON 檔案,然後使用--cli-input-json選項執行update-deployment-group命令。請務必包含 --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

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