You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2生命周期钩子:首次重启后触发LAUNCHED状态与CodeDeploy部署

解决Auto Scaling Group实例首次重启后触发CodeDeploy部署的问题

核心方案:分阶段UserData脚本+ASG健康检查适配

步骤1:拆分UserData为首次启动与重启后执行逻辑

通过本地标记文件区分实例首次启动和重启后的状态,让重启操作仅在首次启动时执行,后续初始化在重启完成后运行:

#!/bin/bash
# 检查是否为重启后的首次运行
if [ -f /var/tmp/first_boot_flag ]; then
    # 重启后执行:完成剩余初始化
    yum install -y required-packages
    systemctl enable --now target-service
    # 删除标记文件,避免重复执行
    rm -f /var/tmp/first_boot_flag
else
    # 首次启动执行:修改内核、安装基础依赖
    echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
    sysctl -p
    yum install -y base-packages
    # 创建标记文件
    touch /var/tmp/first_boot_flag
    # 触发实例重启
    reboot
fi

步骤2:调整ASG健康检查规则

  • 延长ASG的健康检查宽限期(建议设置为10-15分钟),覆盖实例重启和初始化的耗时,避免ASG在重启过程中误判实例不健康。
  • 若使用ELB关联ASG,将ELB健康检查配置为检测实例上的关键服务端口或健康接口,确保只有当重启后的初始化完成、服务就绪时,实例才被标记为InService。

步骤3:利用CodeDeploy与ASG的关联逻辑触发部署

CodeDeploy部署组关联ASG时,默认会在实例被ASG标记为InService后自动触发部署。通过上述步骤,实例仅在重启完成、初始化完毕后才会进入InService状态,自然就能实现“重启后再触发部署”的需求。


内容的提问来源于stack exchange,提问作者smirnoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:15:31