如何实现EC2实例闲置自动关闭、有访问请求时自动启动?
实现EC2实例闲置自动关闭+请求触发自动启动方案
一、闲置自动关闭(快速梳理)
- 利用CloudWatch监控EC2的CPU使用率等指标,设置阈值(比如CPU使用率<5%持续30分钟)
- 关联自动化动作(如Lambda函数或直接执行停止实例指令),触发实例停止
二、请求触发自动启动核心方案(基于现有Route 53改造)
方案1:Route 53 + Lambda + 健康检查(推荐)
- 将Route 53原有的简单A记录改为故障转移路由策略:主记录指向EC2实例,辅助记录指向一个触发Lambda的端点(或静态提示页面)
- 配置Lambda函数:
- 检测目标EC2实例状态,若处于停止状态则调用
StartInstancesAPI启动实例 - 启动过程中可返回“服务正在启动,请稍后刷新”的提示(可选)
- 检测目标EC2实例状态,若处于停止状态则调用
- 配置Route 53健康检查:定期检测EC2实例是否在线,当实例停止时自动将流量切换到辅助记录触发启动逻辑,实例启动完成后切回主记录
方案2:Route 53 + 应用负载均衡(ALB)
- 创建ALB,将目标组关联你的EC2实例,开启目标组的自动注册和健康检查
- 修改Route 53的A记录,指向ALB的DNS名称
- 配置Lambda函数:当ALB目标组检测到无可用实例时,触发Lambda启动EC2
- 实例启动并通过健康检查后,ALB自动将流量转发到EC2
方案3:Route 53 + S3静态站(低成本)
- 创建S3静态网站,页面嵌入调用Lambda的脚本,提示用户服务正在启动
- 修改Route 53为故障转移策略:主记录指向EC2,辅助记录指向S3静态站
- Route 53健康检查失败时(EC2停止),流量自动切到S3,脚本触发Lambda启动EC2;EC2恢复后流量切回
关键注意事项
- 给Lambda配置足够IAM权限:
ec2:StartInstances、route53:ChangeResourceRecordSets(如需修改路由)等 - EC2启动需要1-2分钟,需在路由层或前端添加等待提示
- 可结合CloudWatch告警,在实例启动后无流量时自动停止,形成完整自动化闭环
内容的提问来源于stack exchange,提问作者Lincoln
相关产品推荐
相关产品推荐

