本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 CodeDeploy 事件创建触发器
您可以创建一个针对 AWS CodeDeploy 部署或实例事件发布 Amazon Simple Notification Service(Amazon SNS)主题的触发器。然后,当该事件发生时,关联主题的所有订阅者都通过主题中指定的终端节点(如短信或电子邮件)接收通知。Amazon SNS 提供多种订阅主题的方式。
在创建触发器之前,必须设置触发器指向的 Amazon SNS 主题。有关信息,请参阅创建主题。在创建主题时,我们建议您为主题指定一个标识其用途的名称,并采用诸如 Topic-group-us-west-3-deploy-fail
或 Topic-group-project-2-instance-stop
这样的格式。
您还必须向 CodeDeploy 服务角色授予 Amazon SNS 权限,然后才能为您的触发器发送通知。有关信息,请参阅 向服务角色授予 Amazon SNS 权限 CodeDeploy 。
创建主题后,您可以添加订阅者。有关创建、管理和订阅主题的信息,请参阅什么是 Amazon Simple Notification Service。
创建触发器以发送 CodeDeploy 事件通知(控制台)
您可以使用 CodeDeploy 控制台为 CodeDeploy 事件创建触发器。在设置过程结束时,将发送一条测试通知消息,以确保权限和触发器详细信息均已正确设置。
为 CodeDeploy 事件创建触发器
-
在中 AWS Management Console,打开 AWS CodeDeploy 控制台。
登录 AWS Management Console 并打开 CodeDeploy 控制台,网址为 https://console.aws.amazon.com/codedeploy
。 注意
使用您在入门 CodeDeploy中设置的同一用户登录。
在导航窗格中,展开部署,然后选择应用程序。
-
在 Applications(应用程序)页面上,选择与您要在其中添加触发器的部署组关联的应用程序的名称。
-
在 Application details(应用程序)页面上,选择您要在其中添加触发器的部署组。
-
选择编辑。
-
展开 Advanced - optional(高级 - 可选)。
-
在 Triggers(触发器)区域中,选择 Create trigger(创建触发器)。
-
在 Create deployment trigger(创建部署触发器)窗格中,执行以下操作:
-
在触发器名称中,输入触发器的名称以便于标识其用途。我们建议采用
Trigger-group-us-west-3-deploy-fail
或Trigger-group-eu-central-instance-stop
这样的格式。 -
在事件中,选择将触发 Amazon SNS 主题发送通知的事件类型。
-
在 Amazon SNS 主题中,选择您为发送此触发器的通知而创建的主题的名称。
-
选择创建触发器。 CodeDeploy 发送测试通知,确认您已正确配置与 Amazon SNS 主题 CodeDeploy 之间的访问权限。如果您已订阅该主题,您会收到通过 SMS 消息或电子邮件发送的确认信息,具体取决于您为该主题选择的终端结点类型。
-
-
选择保存更改。
创建触发器以发送 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在创建过程结束时,您会收到一条测试通知消息,指示权限和触发器详细信息均已正确设置。