自动缩放组设置为 0 个实例时的 AWS Codedeploy

Posted

技术标签:

【中文标题】自动缩放组设置为 0 个实例时的 AWS Codedeploy【英文标题】:AWS Codedeploy when Autoscaling Group set to 0 instances 【发布时间】:2016-07-20 14:52:36 【问题描述】:

我正在使用 Codedeploy 推送到 Auto Scaling 组中的我的 ec2 实例。有时,该 Auto Scaling 组没有任何现有实例正在运行。当我在这种情况下部署时,codedeploy 总是失败,即使我已将最小健康主机设置为 0 个实例。

当有 0 个实例时,我是否可以让代码部署说“成功”?

它出现在 codedeploy 失败时,它不会更新修订版。这对我来说真的很痛苦。

【问题讨论】:

在触发代码部署作业之前将实例数增加到 1 的任何解决方法? 【参考方案1】:

您需要在部署组中至少有一个实例才能成功部署。将 Autoscaling 组(至少包含 1 个实例)与 CodeDeploy 挂钩后,您应该成功部署以更新部署组的目标修订。在此之后,任何新的实例扩展都应该自动选择目标版本。

您还可以将自动缩放组的 :min 属性设置为 1 以始终在其中保留一个实例。

【讨论】:

感谢您提供此信息!您是否知道任何有关“仅在 ASG 内至少有一次成功的显式 CodeDeploy 后才完成自动 CodeDeploy”行为的文档?【参考方案2】:

我知道已经过去两年多了,但我也遇到了同样的问题。我的解决方法是为我的 Auto Scaling 组创建我自己的生命周期挂钩,并为部署我的修订版创建一个 SNS + Lambda。

问题是,您应该首先为应用程序注册一个修订版,而不是部署它。 Auto Scaling 组创建新实例后,挂钩将向 Lambda 发送 SNS 消息,然后您可以(基于收到的消息 + 环境变量)查找修订(已创建)并将它们部署到新实例实例。

我已使用 CloudFormation 将所有这些链接在一起 - 我极力推荐用于此解决方法和所有其他 AWS 相关服务。

【讨论】:

以上是关于自动缩放组设置为 0 个实例时的 AWS Codedeploy的主要内容,如果未能解决你的问题,请参考以下文章

AWS Auto Scaling - 带有 2 个固定实例

无法通过 cloudformation 创建具有自动缩放功能的 AWS EMR

AWS EC2 实例终止保护在自动缩放 IN 下不起作用

设置“期望大小:0”是不是会阻止集群自动缩放器扩展托管节点组?

应用程序负载均衡器在自动缩放组打开新实例之前不会保留请求

AWS 和 Auto Scaling cassandra