amazon-web-services - 带有 AllAtOnce 的 Amazon CodeDeploy 无法在具有 1 个 EC2 实例的新 CloudFormation 堆栈上执行

标签 amazon-web-services aws-cloudformation aws-code-deploy

我的 CloudFormation 堆栈生成一个 ScalingGroup,其 MinSize 和 MaxSize 设置为 1。它还会创建一个针对此 ScalingGroup 的 DeploymentGroup。

  • 当使用配置名称 CodeDeployDefault.OneAtATime 配置部署组时然后部署成功启动。
  • 当使用配置名称 CodeDeployDefault.AllAtOnce 配置部署组时然后在创建堆栈后,codedeploy 不会执行任何操作,并且您在 EC2 上看不到任何事件或日志跟踪。仅一处提及错误代码 HEALTH_CONSTRAINTS 。如果我终止该实例,则扩展组会启动一个新实例,但 CodeDeploy 不会再执行任何操作。如果我使用 CodeDeployDefault.OneAtATime 手动启动部署然后就可以了。

根据我在文档中读到的内容,这种情况不应该发生

  • 不应进行运行状况检查,因为部署组中不存在实例
  • CodeDeployDefault.AllAtOnce最小健康百分比为 0。因此引发错误的原因可能是它等于 0 并且决定不继续使用健康错误代码
  • CodeDeployDefault.AllAtOnce提到过,这应该是我的理解,它不会进行健康检查,因为从概念上讲没有意义,因为所有实例都将同时配置。

我的期望是正确的还是我做错了什么?

最佳答案

错误代码 HEALTH_CONSTRAINTS 表示 CodeDeploy 部署失败,并且不满足配置的健康主机比率。您可能需要进入 AWS CodeDeploy 控制台并单击在 CloudFormation 运行过程中创建的部署,并检查部署失败的原因。 CodeDeployDefault.OneAtATime 和 CodeDeployDefault.AllAtOnce 之间的区别可以在这里找到:http://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html

CodeDeployDefault.AllAtOnce 尝试一次将应用程序修订部署到尽可能多的实例。如果应用程序修订版部署到一个或多个实例,则整体部署的状态将显示为“成功”。如果应用程序修订版未部署到任何实例,则整体部署的状态将显示为“失败”。使用九个实例的示例,CodeDeployDefault.AllAtOnce 将尝试一次部署到所有九个实例。即使单个实例部署成功,整体部署也会成功;仅当所有九个实例的部署都失败时,它才会失败。

CodeDeployDefault.OneAtATime 一次仅将应用程序修订版部署到一个实例。 对于包含多个实例的部署组: 如果应用程序修订版部署到所有实例,则整体部署成功。此规则的异常(exception)是,如果部署到最后一个实例失败,则整体部署仍然会成功。这是因为 AWS CodeDeploy 使用 CodeDeployDefault.OneAtATime 配置一次仅允许一个实例离线。 一旦应用程序修订版无法部署到除最后一个实例之外的任何实例,整个部署就会失败。 在使用九个实例的示例中,它将一次部署到一个实例。如果前8个实例部署成功,则整体部署成功;如果前八个实例中任何一个实例的部署失败,则整个部署都会失败。 对于仅包含一个实例的部署组,只有部署到单个实例成功,整体部署才成功。

由于您的部署组仅包含一个单实例,因此如果您设置了 CodeDeployDefault.OneAtATime 并且单实例部署失败,部署仍将标记为成功。请在 AWS CodeDeploy 控制台上检查部署详细信息。

关于amazon-web-services - 带有 AllAtOnce 的 Amazon CodeDeploy 无法在具有 1 个 EC2 实例的新 CloudFormation 堆栈上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46000336/

相关文章:

amazon-web-services - AWS CLI Cloudformation - 终端节点 URL 读取超时 : "https://cloudformation.us-east-1.amazonaws.com/"

linux - cloudformation/用户数据...传递操作系统用户密码而不回显到日志

amazon-web-services - AWS CodeDeploy 在 Auto Scaling 用户数据脚本完成之前执行

amazon-web-services - AWS 用户管理上的 Kibana : Created new user but can't see my index patterns

node.js - 如何将自定义类添加到 AWS Lambda 层?

在 Web 浏览器中运行 RStudio 的多个实例

amazon-web-services - aws sts get-session-token 因配置文件失败

python - 如何在aws cdk中使用伪参数?

linux - 在非根上下文中运行 linux AWS CodeDeploy 代理时出现问题

jenkins - 如何使用 jenkins 配置 aws 代码部署