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

如何通过CloudFormation修改LaunchConfig配置并替换其中的AMI ID

CloudFormation替换Auto Scaling启动配置AMI ID操作指南

操作前提

  • 如果你此前的Auto Scaling组(ASG)和启动配置(LC)是手动在控制台/CLI创建的,需要先通过CloudFormation资源导入功能将这两个资源纳入CloudFormation栈管理,才能通过模板更新配置
  • 如果你已经是通过CloudFormation管理上述资源,可直接操作栈更新

具体操作步骤

  • 提前验证目标AMI的可用性:确认该AMI在你业务部署的AWS区域存在,且你的AWS账号具备该AMI的访问权限
  • 编辑对应CloudFormation栈的模板,找到AWS::AutoScaling::LaunchConfiguration资源定义段,替换ImageId字段的取值为新的AMI ID
    注意:启动配置是不可变资源,修改ImageId属性会触发CloudFormation自动删除旧启动配置、创建新启动配置,同时自动将关联的ASG绑定到新启动配置,不会影响ASG内现有运行的实例
  • 如果你需要将ASG内现有旧实例也替换为新AMI启动的实例,可在模板中为ASG配置InstanceRefresh策略,设置分批替换规则,避免业务中断
  • 提交CloudFormation栈更新,等待变更执行完成后,验证ASG关联的启动配置ID是否更新,新扩容实例的AMI是否符合预期

示例模板

以下是包含启动配置和ASG的最小可用YAML模板示例,你可以基于你原有模板调整对应字段即可:

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  TargetAmiId:
    Type: String
    Description: 替换为你需要使用的新AMI ID
    Default: "ami-xxxxxxx" # 这里填写你的目标AMI ID
  InstanceType:
    Type: String
    Default: "t2.micro"
  AsgSubnets:
    Type: List<AWS::EC2::Subnet::Id>
    Description: ASG部署的子网ID列表
  InstanceSecurityGroups:
    Type: List<AWS::EC2::SecurityGroup::Id>
    Description: EC2实例绑定的安全组ID列表
Resources:
  MyLaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Properties:
      ImageId: !Ref TargetAmiId
      InstanceType: !Ref InstanceType
      SecurityGroups: !Ref InstanceSecurityGroups
      # 可按需补充其他配置:实例配置文件、用户数据、块设备映射等
  MyAutoScalingGroup:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      MinSize: 1
      MaxSize: 3
      DesiredCapacity: 2
      LaunchConfigurationName: !Ref MyLaunchConfig
      VPCZoneIdentifier: !Ref AsgSubnets
      # 配置实例刷新策略,自动替换旧实例
      InstanceRefresh:
        Strategy: Rolling
        Preferences:
          MinHealthyPercentage: 75
          InstanceWarmup: 300

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:01