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

如何通过Terraform将ASG中的EC2实例设置为Standby模式?

使用Terraform管理ASG实例的Standby/InService状态

可以通过Terraform完成ASG实例的Standby模式切换,配合AMI备份流程,以下是具体实现方案:

核心思路

  1. 获取目标ASG中的EC2实例列表
  2. 将指定实例切换至Standby状态(自动从Classic LB中移除,停止接收流量)
  3. 基于Standby实例创建备份AMI(重启不影响业务)
  4. AMI创建完成后,将实例切回InService状态,重新接入LB

关键配置说明

1. 获取ASG实例信息

通过data资源获取目标ASG的实例列表:

data "aws_autoscaling_group" "target_asg" {
  name = "your-classic-lb-asg-name" # 替换为你的ASG名称
}

2. 调整ASG容量计算规则(可选但重要)

如果不希望ASG因实例进入Standby而自动扩容,需在ASG资源中设置ignore_standby_in_capacity = true,让ASG在计算容量时忽略Standby实例:

resource "aws_autoscaling_group" "existing_asg" {
  # 其他原有配置...
  ignore_standby_in_capacity = true
}

如果是已存在的ASG,可通过terraform import导入后添加该配置。

3. 将实例切换至Standby状态

使用aws_autoscaling_instance资源设置实例为Standby模式:

resource "aws_autoscaling_instance" "set_standby" {
  for_each = toset(data.aws_autoscaling_group.target_asg.instances)
  instance_id = each.value
  autoscaling_group_name = data.aws_autoscaling_group.target_asg.name
  standby = true
}

4. 创建备份AMI

依赖Standby操作完成后,基于实例创建AMI:

resource "aws_ami" "instance_backup" {
  for_each = aws_autoscaling_instance.set_standby

  name = "asg-instance-backup-${each.value.instance_id}-${timestamp()}"
  description = "Backup AMI for ASG instance ${each.value.instance_id}"
  source_instance_id = each.value.instance_id

  # 确保先完成Standby切换再创建AMI
  depends_on = [aws_autoscaling_instance.set_standby]
}

5. 将实例切回InService状态

AMI创建完成后,将实例恢复为InService:

resource "aws_autoscaling_instance" "set_inservice" {
  for_each = aws_ami.instance_backup
  instance_id = each.key
  autoscaling_group_name = data.aws_autoscaling_group.target_asg.name
  standby = false

  # 确保AMI创建完成后再切回状态
  depends_on = [aws_ami.instance_backup]
}

注意事项

  • 实例进入Standby状态后,会自动从Classic负载均衡中移除,停止接收业务流量,适合进行需要重启的备份操作
  • 如果需要批量处理实例,上述配置通过for_each实现了多实例的循环处理
  • 若ASG开启了健康检查,Standby状态的实例不会被ASG标记为不健康而终止

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:31:09