AWS Auto Scaling Group是否支持设置每月第一个周日扩容的定时策略?
实现方案说明
你需要的「每月第一个周日调整ASG最小值」的需求完全可以通过AWS CloudWatch相关能力实现,不需要依赖ASG自带的Scheduled actions功能,具体操作如下:
核心逻辑
用Amazon EventBridge(原CloudWatch Events,属于CloudWatch服务矩阵)的自定义cron定时规则触发ASG配置更新,即可实现每月首个周日的定时调整需求。
具体操作步骤
- 第一步:配置权限
提前创建IAM角色,授予对应服务调整ASG配置的权限,所需权限动作包含autoscaling:UpdateAutoScalingGroup,关联的资源为你需要调整的目标ASG的ARN。 - 第二步:配置定时触发规则
进入EventBridge控制台创建新规则,触发类型选择「Schedule」,定时模式选择cron表达式,匹配每月第一个周日的cron表达式参考如下(按UTC时间配置):0 0 12 ? * SUN#1 *
表达式中SUN#1代表每月第一个周日,你可以根据你业务的时区、需要触发的具体时间调整前几位的秒、小时、日期数值,注意需要将业务时区的时间转换为UTC时间填写。 - 第三步:配置触发目标
两种可选配置,按需选择即可:- 无代码方案:目标类型选择「AWS API call」,服务选择「Auto Scaling」,操作选择「UpdateAutoScalingGroup」,按提示填写目标ASG名称、要调整的
MinSize、DesiredCapacity数值即可。 - 灵活扩展方案:先创建一个Lambda函数,代码中调用ASG的更新接口(Python示例代码参考如下),然后将EventBridge规则的目标设置为该Lambda函数,适合需要额外逻辑判断的场景。
import boto3 client = boto3.client('autoscaling') def lambda_handler(event, context): response = client.update_auto_scaling_group( AutoScalingGroupName='你的ASG名称', MinSize=你要上调的最小值, DesiredCapacity=你要设置的期望实例数 ) return response - 无代码方案:目标类型选择「AWS API call」,服务选择「Auto Scaling」,操作选择「UpdateAutoScalingGroup」,按提示填写目标ASG名称、要调整的
- 第四步:配置回退规则(可选)
如果高峰过后需要将ASG最小值调回原有数值,重复上述步骤,新增一条对应时间的EventBridge规则,触发更新ASG配置为原数值即可。
注意事项
- 建议将触发时间设置为业务高峰到来前15~30分钟,预留足够的EC2实例启动、初始化、注册到负载均衡的时间,避免影响业务可用性。
- 配置完成后可先手动触发一次规则,验证ASG配置是否可以正常更新、实例启动是否符合预期。
内容的提问来源于stack exchange,提问作者Cyril N.
相关产品推荐
相关产品推荐

