AWS Auto Scaling Group健康检查宽限期自动回退问题咨询
核心原因
你的Auto Scaling Group(ASG)健康检查宽限期被自动重置为600,和启动模板自动更新直接相关,主要有以下几种可能:
启动模板参数覆盖ASG配置:如果你的ASG关联了启动模板,且启动模板中明确定义了
HealthCheckGracePeriod为600,同时ASG配置了自动同步启动模板的参数(比如在ASG的启动模板设置中开启了对应参数的覆盖),那么每次启动模板更新新版本时,ASG会自动继承启动模板中的宽限期值,覆盖你手动修改的1200。基础设施即代码(IaC)的自动部署覆盖:如果你的ASG和启动模板是通过CloudFormation、CDK、Terraform等IaC工具管理的,而代码中定义的
HealthCheckGracePeriod为600,那么当AMI更新触发自动部署流程时,IaC工具会强制执行代码中的配置,将ASG的宽限期改回600,无视手动修改。AWS Config规则的自动修正:若你配置了AWS Config规则,强制要求ASG的健康检查宽限期为600,且开启了自动修正功能,那么当你手动修改为1200后,Config规则会检测到配置不符合预期,自动将其重置为600。启动模板更新引发的配置变更会触发Config规则的检测,加速这个重置过程。
启动模板版本的参数继承:新生成的启动模板版本可能继承了旧版本的
HealthCheckGracePeriod参数值(600),而ASG设置为使用最新启动模板版本,因此每次新版本发布,ASG都会应用这个默认的600值。
解决步骤
检查并修正启动模板参数
- 进入AWS控制台的EC2启动模板页面,查看所有版本的
HealthCheckGracePeriod配置,确认是否为600。 - 创建新的启动模板版本,将
HealthCheckGracePeriod设置为1200,并将该版本设为启动模板的默认版本;或者直接编辑现有默认版本的该参数。
- 进入AWS控制台的EC2启动模板页面,查看所有版本的
调整ASG的启动模板同步策略
- 进入ASG配置页面,找到「启动模板」设置项,查看「更新策略」中的「覆盖启动模板参数」选项。
- 如果开启了健康检查宽限期的同步,要么保持同步但确保启动模板的参数为1200,要么关闭该参数的同步,让ASG保留手动设置的宽限期值。
修正IaC代码配置
- 检查管理ASG和启动模板的CloudFormation/CDK/Terraform代码,找到
HealthCheckGracePeriod的定义,将其修改为1200。 - 重新部署代码,确保IaC工具的配置和你期望的一致,避免后续自动部署覆盖手动修改。
- 检查管理ASG和启动模板的CloudFormation/CDK/Terraform代码,找到
检查并调整AWS Config规则
- 进入AWS Config控制台,查找针对ASG健康检查宽限期的规则,确认规则的期望值是否为600。
- 如果规则是强制要求600,要么修改规则的期望值为1200,要么关闭规则的自动修正功能。
验证配置稳定性
- 修改完成后,手动触发一次ASG的实例刷新,观察健康检查宽限期是否保持为1200。
- 等待下一次启动模板自动更新后,再次检查ASG的宽限期配置,确认不会被重置。
内容的提问来源于stack exchange,提问作者Simon Twist

