本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 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 事件的觸發器
-
在 AWS Management Console中,開啟 AWS CodeDeploy 主控台。
請登入AWS Management Console並開啟 CodeDeploy 主控台,網址為 https://console.aws.amazon.com/codedeploy
。 注意
使用您設定的相同使用者登入開始使用 CodeDeploy。
在瀏覽窗格中,展開 [部署],然後選擇 [應用程式]。
-
在 Applications (應用程式) 頁面上,選擇與您要新增觸發之部署群組建立關聯的應用程式名稱。
-
在 Application details (應用程式詳細資訊) 頁面上,選擇您要新增觸發的部署群組。
-
選擇 Edit (編輯)。
-
展開 Advanced - optional (進階 - 選用)。
-
在 Triggers (觸發) 區域中,選擇 Create trigger (建立觸發)。
-
在 Create deployment trigger (建立部署觸發) 窗格中,執行下列動作:
-
在 Trigger name (觸發名稱) 中,輸入可輕鬆識別用途的觸發名稱。建議使用
Trigger-group-us-west-3-deploy-fail
或Trigger-group-eu-central-instance-stop
這類格式。 -
在事件中,選擇要觸發 Amazon SNS 主題以傳送通知的事件類型或類型。
-
在 Amazon SNS 主題中,選擇您為傳送此觸發器通知所建立的主題名稱。
-
選擇建立觸發程式。 CodeDeploy 傳送測試通知,以確認您已正確設定 CodeDeploy 和 Amazon SNS 主題之間的存取。根據您針對主題所選取的端點類型,且您已訂閱該主題時,會在 SMS 訊息或電子郵件訊息中收到確認訊息。
-
-
選擇 Save changes (儲存變更)。
建立觸發器以傳送 CodeDeploy 事件通知 (CLI)
您可以使用 CLI,在建立部署群組時包含觸發,也可以將觸發新增至現有部署群組。
建立觸發以傳送新部署群組的通知
建立 JSON 檔案以設定部署群組,然後使用--cli-input-json
選項執行create-deployment-group命令。
建立 JSON 檔案的最簡單方法是使用 --generate-cli-skeleton
選項取得 JSON 格式的複本,然後使用純文字編輯器提供必要值。
-
執行下列命令,然後將結果複製至純文字編輯器。
aws deploy create-deployment-group --generate-cli-skeleton
-
將現有 CodeDeploy 應用程序的名稱添加到輸出中:
{ "applicationName": "TestApp-us-east-2", "deploymentGroupName": "", "deploymentConfigName": "", "ec2TagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "onPremisesInstanceTagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "autoScalingGroups": [ "" ], "serviceRoleArn": "", "triggerConfigurations": [ { "triggerName": "", "triggerTargetArn": "", "triggerEvents": [ "" ] } ] }
-
提供您要設定之參數的值。
使用指create-deployment-group令時,您必須至少提供下列參數的值:
-
applicationName
:已在您帳戶中建立的應用程式名稱。 -
deploymentGroupName
:您將建立的部署群組名稱。 -
serviceRoleArn
:在您的帳戶 CodeDeploy 中設定的現有服務角色的 ARN。如需相關資訊,請參閱 步驟 2:建立服務角色 CodeDeploy。
在
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" ] } ] }
-
-
將更新儲存為 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 格式的部署群組組態複本,然後使用純文字編輯器更新參數值。
-
執行下列命令,然後將結果複製至純文字編輯器。
aws deploy get-deployment-group --application-name
application
--deployment-group-namedeployment-group
-
刪除輸出中的下列內容:
-
在輸出的開頭,刪除
{ "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": [] }
-
-
在
triggerConfigurations
區段中,新增triggerEvents
、triggerTargetArn
和triggerName
參數的資料。如需有關觸發器組態參數的資訊,請參閱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": [] }
-
將更新儲存為 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在建立程序結束時,您會收到測試通知訊息,指出同時正確設定許可和觸發詳細資訊。