我的云形式堆栈产生一个缩放组,该缩放组设置为1。它还创建了一个针对此scalingGroup的部署程序。
- 当使用配置名称
CodeDeployDefault.OneAtATime
配置部署集群时,部署成功开始。 - 当使用配置名称
CodeDeployDefault.AllAtOnce
配置部署集群时,则在创建堆栈时,编码eploy不做任何事情,并且您在EC2上看不到任何事件或日志迹线。错误代码HEALTH_CONSTRAINTS
只有一个提及。如果我终止了实例,则缩放组将启动一个新实例,但编码eploy不会再做任何事情。如果我用CodeDeployDefault.OneAtATime
手动启动部署,那么它可以工作。
根据我在文档中阅读的内容,这不应该发生
- 由于部署组中不存在实例 ,因此不应进行健康检查
-
CodeDeployDefault.AllAtOnce
的最低健康百分比为0。因此,提出错误的原因是它等于0,因此决定不继续使用健康错误代码 -
CodeDeployDefault.AllAtOnce
提到,这应该是我的理解,这不会进行荒地检查,因为从概念上讲没有意义,因为所有实例都将同时配置。
我的期望还是正确?还是我做错了什么?
错误代码health_constraints意味着编码eploy部署失败,并且不满足配置的健康主机比率。您可能需要到达AWS编码器控制台,然后单击在云形式运行过程中创建的部署,以及检查部署失败的原因。可以在此处找到CodeDeployDefault.Oneatatime和CodeDeployDefault.Allatonce之间的不同之处:
codedeploydefault.allatonce 尝试一次将应用程序修订部署到尽可能多的实例。如果将应用程序修订部署到一个或多个实例,将显示整体部署的状态。如果未部署应用程序修订版,将显示整体部署的状态为失败。使用九个实例的示例,codedeploydefault.allatonce将尝试一次部署到所有九个实例。如果部署到一个实例成功,整体部署将成功;仅当所有九个实例的部署失败时,它才会失败。
codedeploydefault.oneatatime 一次将应用程序修改部署到一个实例。对于包含多个实例的部署组:如果将应用程序修订部署到所有实例,则整体部署将成功。此规则的例外是,如果对最后一个实例的部署失败,则总部署仍然成功。这是因为AWS CodeDeploy一次仅允许使用CodeDeployDefault.oneatatime配置离线一个实例。一旦应用程序修订未能部署到最后一个实例,总部署就会失败。在使用九个实例的示例中,它将一次部署到一个实例。如果前八个实例的部署成功,整体部署将成功;如果前八个实例中的任何一个失败,则整体部署会失败。对于仅包含一个实例的部署组,只有在部署到单个实例成功的情况下,整体部署才能成功。
由于您的部署组仅包含一个实例,如果您设置了codedeploydefault.oneatatime和单个实例部署失败,则部署仍将被标记为成功。请检查AWS CodeDeploy控制台的部署详细信息。