能否通过Auto Scaling调度EC2启停?无需Lambda函数实现方法咨询
如何用Auto Scaling实现EC2实例定时启停(无需Lambda)
完全可以通过Auto Scaling的**计划扩展动作(Scheduled Actions)**实现EC2实例的定时启停,且不需要依赖Lambda函数。核心思路是通过定时调整Auto Scaling组(ASG)的「所需容量」来控制实例的启动与终止。
前提条件
你的EC2实例必须归属在一个Auto Scaling组中——单独的EC2实例无法直接利用Auto Scaling的定时功能。如果还没有ASG,需要先创建并将目标实例纳入,或基于启动模板/配置创建ASG。
具体实现步骤
1. 创建定时停止实例的计划动作
- 进入AWS控制台的Auto Scaling页面,找到目标ASG
- 切换到「计划的动作」标签,点击「创建计划的动作」
- 配置参数:
- 动作类型:选择「设置所需容量」
- 所需容量:输入
0(ASG会自动终止所有实例,实现“停止”效果) - 时间:设置你希望停止实例的具体时间(注意:时间基于UTC时区,需自行转换本地时间)
- 重复选项:根据需求设置重复频率(如每天、每周)
- 保存动作
2. 创建定时启动实例的计划动作
- 同样在「计划的动作」标签下,点击「创建计划的动作」
- 配置参数:
- 动作类型:选择「设置所需容量」
- 所需容量:输入你需要启动的实例数量(比如
1) - 时间:设置启动实例的具体时间(同样注意UTC时区转换)
- 重复选项:与停止动作的频率保持一致(如每天对应每天)
- 保存动作
关键注意事项
- 如果实例使用本地实例存储存储数据,不建议用此方法——ASG终止实例会彻底销毁本地存储的数据。适合用EBS卷持久化数据的场景,启动时ASG会基于启动模板/配置重新创建实例并挂载EBS卷。
- 确保ASG的「最小实例数」允许设为
0,否则无法将所需容量调整到0实现停止。 - 计划动作的时间是UTC时区,比如北京时间(UTC+8)的22:00,对应UTC时间的14:00,设置时需换算准确。
内容的提问来源于stack exchange,提问作者Geralt
相关产品推荐
相关产品推荐

