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

如何根据EC2自动启停计划调度ASG启停,避免生成冗余实例?

调度Auto Scaling Group启停的可行方案

针对你遇到的ASG自动补实例问题,不用禁用ASG或移除实例的话,核心思路是从ASG的配置本身入手,而非直接操作EC2实例,以下是几种实用方案:

1. 动态调整ASG的期望实例数与最小实例数

这是最直接的方案,通过修改ASG的DesiredCapacity和MinSize参数,控制实例的启停:

  • 非办公时段:将MinSize和DesiredCapacity都设为0,ASG会自动终止所有运行中的实例,且不会启动新实例
  • 办公时段:将两个参数改回业务所需的正常值(比如MinSize=1,DesiredCapacity=1)

你可以用现有Lambda扩展这个逻辑,调用AWS SDK的update_auto_scaling_group接口,示例Python代码:

import boto3

def lambda_handler(event, context):
    asg_client = boto3.client('autoscaling')
    target_asg = '你的ASG名称'
    # 根据触发时间判断是上班还是下班,这里示例设为下班时段逻辑
    is_off_hours = True  # 实际可通过事件时间或CloudWatch定时触发判断
    
    if is_off_hours:
        asg_client.update_auto_scaling_group(
            AutoScalingGroupName=target_asg,
            MinSize=0,
            DesiredCapacity=0
        )
    else:
        asg_client.update_auto_scaling_group(
            AutoScalingGroupName=target_asg,
            MinSize=1,
            DesiredCapacity=1
        )

2. 使用ASG原生的计划扩展动作

AWS ASG自带计划调度功能,无需额外维护Lambda,直接在ASG中配置定时动作:

  • 登录AWS控制台,找到目标ASG,进入「计划的操作」标签
  • 创建两个计划动作:
    • 上班触发(如周一至周五9:00):设置最小容量、期望容量为业务值
    • 下班触发(如周一至周五18:00):设置最小容量、期望容量为0
  • 也可以用CLI创建:
# 创建下班时段的计划动作
aws autoscaling put-scheduled-update-group-action \
  --auto-scaling-group-name 你的ASG名称 \
  --scheduled-action-name ScaleDownOffHours \
  --schedule "cron(0 10 ? * MON-FRI *)"  # UTC时间,对应北京时间18:00
  --min-size 0 \
  --desired-capacity 0

# 创建上班时段的计划动作
aws autoscaling put-scheduled-update-group-action \
  --auto-scaling-group-name 你的ASG名称 \
  --scheduled-action-name ScaleUpOnHours \
  --schedule "cron(0 1 ? * MON-FRI *)"  # UTC时间,对应北京时间9:00
  --min-size 1 \
  --desired-capacity 1

3. 结合实例保护保留特定EC2实例

如果需要保留特定实例(比如有本地配置或数据),可以给目标实例开启实例保护,阻止ASG在你停止实例后自动替换:

  • 在EC2控制台找到目标实例,右键选择「实例设置」→「更改实例保护」,开启「防止终止」
  • 然后用Lambda正常启停该实例,ASG不会因为实例停止而启动新实例(前提是ASG的期望容量等于当前运行实例数)
  • 注意:如果后续需要ASG自动扩容,记得关闭实例保护或调整期望容量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:10:37