为A创建触发器 CodeDeploy 事件 - AWS CodeDeploy
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为A创建触发器 CodeDeploy 事件

您可以创建发布一个 Amazon Simple Notification Service (Amazon SNS)主题 AWS CodeDeploy 部署或实例事件。然后,当该事件发生时,关联主题的所有订阅者都通过主题中指定的终端节点(如 SMS 消息或电子邮件)接收通知。Amazon SNS 提供多种订阅主题的方式。

在创建触发器之前,必须设置触发器指向的 Amazon SNS 主题。有关信息,请参阅 创建主题. 创建主题时,我们建议您将其用于标识其用途,以格式为例 Topic-group-us-west-3-deploy-failTopic-group-project-2-instance-stop.

您还必须授予 Amazon SNS 权限 CodeDeploy 可以为触发器发送通知之前的服务角色。有关信息,请参阅授予 Amazon SNS 权限 CodeDeploy 服务角色.

创建主题后,您可以添加订阅者。有关创建、管理和订阅主题的信息,请参阅 什么是 Amazon Simple Notification Service.

创建发送通知的触发器 CodeDeploy 事件(控制台)

您可以使用 CodeDeploy 用于创建触发器的 CodeDeploy 事件。在设置过程结束时,将发送一条测试通知消息,以确保权限和触发器详细信息均已正确设置。

为 CodeDeploy 事件创建触发器

  1. 在 AWS 管理控制台,打开 AWS CodeDeploy 控制台。

  2. Sign in to the AWS 管理控制台 and open the CodeDeploy console at https://console.amazonaws.cn/codedeploy.

    注意

    使用您在 开始使用 CodeDeploy中使用的相同账户或 IAM 用户信息登录。

  3. 在导航窗格中,展开 Deploy (部署),然后选择 Applications (应用程序)

  4. 应用 页面,选择与要添加触发器的部署组关联的应用程序的名称。

  5. 应用程序详细 页面,选择要添加触发器的部署组。

  6. 选择 编辑.

  7. 展开 高级-可选.

  8. 触发因 区域,选择 创建触发器.

  9. 创建部署触发器 窗格,执行以下操作:

    1. 触发器名称,为触发器输入一个名称,这样便可轻松识别其目的。我们建议格式如下 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. 选择 保存更改.

创建发送通知的触发器 CodeDeploy 事件(CLI)

您可以在创建部署组时使用 CLI 来加入触发器,也可以将触发器添加到现有部署组。

创建触发器以发送关于新部署组的通知

创建一个JSON文件来配置部署组,然后运行 创建-部署组 命令使用 --cli-input-json 选项。

创建 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. 为您要配置的参数提供值。

    当您使用 创建-部署组 命令,您必须至少提供以下参数的值:

    • applicationName: :已在您的账户中创建的应用程序的名称。

    • deploymentGroupName: :您正在创建的部署组的名称。

    • serviceRoleArn: :在您的账户中为 CodeDeploy 设置的现有服务角色的 ARN。有关信息,请参阅步骤 3:为 CodeDeploy 创建服务角色.

    triggerConfigurations 部分,为以下参数提供值:

    • triggerName: :您要为触发器给定的便于标识的名称。我们建议格式如下 Trigger-group-us-west-3-deploy-failTrigger-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" ] } ] }
  4. 将更新保存为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 格式),然后在纯文本编辑器中更新参数值。

  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-cn:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": [] }
  3. triggerConfigurations 部分,添加数据 triggerEventstriggerTargetArn,和 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": [] }
  4. 将更新保存为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

    在创建过程结束时,您会收到一条测试通知消息,指示权限和触发器详细信息均已正确设置。