为A创建触发器 CodeDeploy 事件
您可以创建发布一个 Amazon Simple Notification Service (Amazon SNS)主题 AWS CodeDeploy 部署或实例事件。然后,当该事件发生时,关联主题的所有订阅者都通过主题中指定的终端节点(如 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 Simple Notification Service.
创建发送通知的触发器 CodeDeploy 事件(控制台)
您可以使用 CodeDeploy 用于创建触发器的 CodeDeploy 事件。在设置过程结束时,将发送一条测试通知消息,以确保权限和触发器详细信息均已正确设置。
为 CodeDeploy 事件创建触发器
-
在 AWS 管理控制台,打开 AWS CodeDeploy 控制台。
-
Sign in to the AWS 管理控制台 and open the CodeDeploy console at https://console.amazonaws.cn/codedeploy
. 注意 使用您在 开始使用 CodeDeploy中使用的相同账户或 IAM 用户信息登录。
-
在导航窗格中,展开 Deploy (部署),然后选择 Applications (应用程序)。
-
在 应用 页面,选择与要添加触发器的部署组关联的应用程序的名称。
-
在 应用程序详细 页面,选择要添加触发器的部署组。
-
选择 编辑.
-
展开 高级-可选.
-
在 触发因 区域,选择 创建触发器.
-
在 创建部署触发器 窗格,执行以下操作:
-
在 触发器名称,为触发器输入一个名称,这样便可轻松识别其目的。我们建议格式如下
Trigger-group-us-west-3-deploy-fail
或Trigger-group-eu-central-instance-stop
. -
在 事件,选择事件类型或类型以触发 Amazon SNS 发送通知的主题。
-
在 Amazon SNS 主题,选择您为此触发器发送通知所创建的主题名称。
-
选择 创建触发器... CodeDeploy 发送测试通知,确认您已正确配置了访问 CodeDeploy 和 Amazon SNS 主题。如果您已订阅该主题,您会收到通过 SMS 消息或电子邮件发送的确认信息,具体取决于您为该主题选择的终端结点类型。
-
-
选择 保存更改.
创建发送通知的触发器 CodeDeploy 事件(CLI)
您可以在创建部署组时使用 CLI 来加入触发器,也可以将触发器添加到现有部署组。
创建触发器以发送关于新部署组的通知
创建一个JSON文件来配置部署组,然后运行 创建-部署组 命令使用 --cli-input-json
选项。
创建 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": [ "" ] } ] }
-
为您要配置的参数提供值。
当您使用 创建-部署组 命令,您必须至少提供以下参数的值:
-
applicationName
: :已在您的账户中创建的应用程序的名称。 -
deploymentGroupName
: :您正在创建的部署组的名称。 -
serviceRoleArn
: :在您的账户中为 CodeDeploy 设置的现有服务角色的 ARN。有关信息,请参阅步骤 3:为 CodeDeploy 创建服务角色.
在
triggerConfigurations
部分,为以下参数提供值:-
triggerName
: :您要为触发器给定的便于标识的名称。我们建议格式如下Trigger-group-us-west-3-deploy-fail
或Trigger-group-eu-central-instance-stop
. -
triggerTargetArn
: :您创建的要与触发器关联的 Amazon SNS 主题的 ARN,采用以下格式:。arn:aws-cn:sns:us-east-2:80398EXAMPLE:NewTestTopic
. -
triggerEvents
: :您要为其触发通知的事件的类型。您可以指定一个或多个事件类型,多个事件类型名称用逗号分隔(例如,"triggerEvents":["DeploymentSuccess","DeploymentFailure","InstanceFailure"]
). 当您添加多个事件类型时,所有这些类型的通知都将发送到您指定的主题,而不是分别发送到不同的主题。您可以从以下事件类型中选择:-
DeploymentStart
-
DeploymentSuccess
-
DeploymentFailure
-
DeploymentStop
-
DeploymentRollback
-
DeploymentReady (仅适用于蓝/绿部署中的替代实例)
-
InstanceStart
-
InstanceSuccess
-
InstanceFailure
-
InstanceReady (仅适用于蓝/绿部署中的替代实例)
-
以下配置示例创建名为
dep-group-ghi-789-2
对于名为TestApp-us-east-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-cn:iam::444455556666:role/AnyCompany-service-role", "triggerConfigurations": [ { "triggerName": "Trigger-group-us-east-2", "triggerTargetArn": "arn:aws-cn:sns:us-east-2:80398EXAMPLE:us-east-deployments", "triggerEvents": [ "DeploymentStart", "DeploymentSuccess", "DeploymentFailure" ] } ] }
-
-
将更新保存为JSON文件,然后使用
--cli-input-json
当您运行 create-deployment-group 命令:重要 务必在文件名前包含
file://
。此命令中需要该项。aws deploy create-deployment-group --cli-input-json file://
filename
.json在创建过程结束时,您会收到一条测试通知消息,指示权限和触发器详细信息均已正确设置。
创建触发器以发送关于现有部署组的通知
使用 AWS CLI 要添加触发器 CodeDeploy 事件到现有部署组,创建JSON文件以更新部署组,然后运行 更新-部署组 命令使用 --cli-input-json
选项。
创建 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-cn:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": [] }
-
-
在
triggerConfigurations
部分,添加数据triggerEvents
,triggerTargetArn
,和triggerName
参数。有关触发器配置参数的信息,请参阅 触发器配置.现在,您的文本文件的内容看起来应类似于以下内容:在部署启动、成功或失败时,此代码都会提示发送通知。
{ "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-cn:sns:us-east-2:80398EXAMPLE:us-east-deployments", "triggerName": "Trigger-group-us-east-2" } ], "serviceRoleArn": "arn:aws-cn:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": [] }
-
将更新保存为JSON文件,然后运行 更新-部署组 命令使用
--cli-input-json
选项。确保包括--current-deployment-group-name
选项并替换您的JSON文件的名称filename
:重要 务必在文件名前包含
file://
。此命令中需要该项。aws deploy update-deployment-group --current-deployment-group-name
deployment-group-name
--cli-input-json file://filename
.json在创建过程结束时,您会收到一条测试通知消息,指示权限和触发器详细信息均已正确设置。