是否可以通过CloudWatch事件确定CodeDeploy部署的确切EC2目标?

问题描述 投票:1回答:1

AWS CodeDeploy的模型定义了Application,这是一个长期存在的高级对象,代表需要部署在某处的软件。一个应用程序可以有许多Deployment Groups,它们代表目标(例如,具有特定标记组合的特定EC2服务器)。 deployment是将某个特定版本的软件发布到应用程序内定义的部署组中。

可以通过CloudWatch events获得有关CodeDeploy进度的反馈。鉴于EC2服务器在部署时可以启动或关闭,并且EC2服务器上的标签可能随时间变化,是否有一种方法可以从CloudWatch CodeDeploy事件中确定目标用户所确定的EC2服务器的确切集合。特定的部署?

特定:

  1. 如果在启动部署时服务器已关闭,则在重新启动时是否会以发布为目标?
  2. 如果在完成部署后在第一台服务器上添加具有相同标签的新服务器,或者在第一台服务器上更改标签,则与我的CodeDeploy事件关联的CloudWatch事件将包含确切的目标服务器详细信息当时的部署,即使它们的当前状态意味着如果我要重新发布相同的部署,它们也不会成为部署的目标?
amazon-web-services amazon-cloudwatch aws-code-deploy
1个回答
2
投票

我使用简单的CodeDeploy设置测试了几种方案。仅基于实例tags标识了部署组(没有ASG)。我的观察如下:

启动部署时服务器关闭

我通过使用停止的实例模拟了这种情况。停止的实例上的部署hanged。如果我让它长时间挂起,可能会timeout。重新启动实例后,部署将继续。

新实例以相同标签开头

CodeDeploy 未自动检测到它们。必须重新部署上次部署,以便检测到新实例并运行最新的应用程序版本。

更改实例的标签

在新的部署中,

标签更改的实例为不包括。因此,您最终会遇到一个实例,该实例运行旧版本的应用程序,而其余实例运行新版本。

Deployment id and list-deployment-targets AWS CLI

list-deployment-targets打印出在部署时发生部署的实例的ID。重新部署时(在这种情况下,部署ID不会更改),该列表将包括要重新部署的实例。实例的原始列表丢失。

注意

到ASG的部署将具有不同的表现,因为CodeDeploy通过其生活方式挂钩与ASG集成。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.