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

AWS CloudFormation修改Auto Scaling组UserData未替换实例如何强制触发?

CloudFormation修改Auto Scaling组UserData触发实例替换方案

默认情况下,CloudFormation修改Auto Scaling组(ASG)关联的UserData不会主动替换已有运行实例,你可以通过以下几种方式实现强制替换:

  • 方法1:配置ASG滚动更新策略
    在CloudFormation模板的ASG资源中添加UpdatePolicy字段,开启滚动更新规则,配置示例如下:
Resources:
  YourASGResource:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      # 原有ASG配置项
    UpdatePolicy:
      AutoScalingRollingUpdate:
        MinInstancesInService: 1 # 滚动期间最小可用实例数,可根据业务调整
        MaxBatchSize: 2 # 单批替换的最大实例数
        PauseTime: PT3M # 每批替换后的冷却等待时间

如果你使用的是启动模板(Launch Template),需要将ASG的启动模板版本设置为$Latest,确保ASG会拉取最新的启动模板配置。如果你使用的是已废弃的启动配置(Launch Configuration)资源,修改UserData会自动生成新的启动配置,配合上述滚动更新策略即可直接触发实例替换。

  • 方法2:手动触发实例刷新
    完成CloudFormation栈更新后,你可以通过AWS CLI直接触发ASG的实例刷新任务:
    aws autoscaling start-instance-refresh --auto-scaling-group-name <你的ASG名称> --strategy Rolling
    你也可以登录AWS控制台,进入对应ASG的「实例刷新」页面手动启动刷新任务。

  • 方法3:添加版本标记强制识别配置变更
    UserData属于启动模板/启动配置的属性,CloudFormation仅在检测到启动配置ID变更、启动模板版本变更时才会主动触发更新。你可以在UserData中加入动态版本参数,每次修改UserData时同步更新参数值,即可让CloudFormation识别到配置变更,自动触发实例替换,示例如下:

Parameters:
  UserDataVersion:
    Type: String
    Description: 每次修改UserData时更新该参数值即可触发替换
Resources:
  YourLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateData:
        UserData:
          Fn::Base64: !Sub |
            #!/bin/bash
            # Version: ${UserDataVersion}
            # 其余UserData逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:27:04