AWS中低成本展示维护页面的最优方案咨询(EC2按需启停场景)
低成本解决EC2离线时展示维护页面的方案
针对你描述的低频使用EC2(每月1-2次视频会议)、需要在EC2离线时展示维护页面且避免DNS缓存问题的场景,CloudFront + S3静态网站 + 源故障转移是最具成本效益的解决方案,完全避开负载均衡的高成本和Route53故障转移的DNS缓存痛点。
核心思路
用CloudFront作为统一入口,将自定义域名指向CloudFront分配,CloudFront配置双源:主源为运行中的EC2,备用源为托管维护页面的S3静态网站。通过CloudFront内置的源健康检查,自动在EC2离线时切换到S3,所有切换逻辑在CDN边缘节点完成,无需依赖客户端DNS刷新,彻底解决浏览器缓存DNS导致的访问延迟问题。
具体实施步骤
1. 配置S3静态网站托管
- 创建S3存储桶,命名建议与自定义域名关联(如
maintenance.yourdomain.com) - 禁用存储桶的「阻止公共访问」设置,开启静态网站托管,设置索引文档为
index.html(即你的维护页面) - 上传维护页面文件到存储桶,确保可以通过S3提供的静态网站域名正常访问
2. 创建CloudFront分配并配置双源
- 在CloudFront控制台创建新分配:
- 主源:选择「自定义源」,输入EC2 Elastic IP对应的域名(建议先在Route53解析一个子域名,如
ec2.yourdomain.com指向Elastic IP),开启源健康检查:- 检查路径设置为EC2上可返回200 OK的端点(比如部署一个简单的Nginx服务,或用Python Flask写个
/health接口) - 调整健康检查间隔为60秒,确保快速检测到EC2离线状态
- 检查路径设置为EC2上可返回200 OK的端点(比如部署一个简单的Nginx服务,或用Python Flask写个
- 备用源:添加S3静态网站的域名作为故障转移备用源,当主源健康检查失败时,CloudFront自动切换到该源
- 主源:选择「自定义源」,输入EC2 Elastic IP对应的域名(建议先在Route53解析一个子域名,如
- 配置缓存策略:针对EC2的动态内容(视频会议服务)设置短TTL(如60秒),维护页面可设置较长TTL(如3600秒),同时开启缓存失效功能,方便EC2恢复后快速更新内容
3. 绑定自定义域名与HTTPS证书
- 在AWS Certificate Manager(ACM)的
us-east-1区域申请免费SSL证书,覆盖你的自定义域名 - 在CloudFront分配的「自定义域名」设置中,绑定该证书,确保HTTPS访问正常
4. 调整Route53记录
- 将原指向EC2 Elastic IP的A记录改为别名记录,指向CloudFront分配的域名
成本优势
- CloudFront:AWS免费套餐包含每月50GB流量和200万请求额度,完全覆盖每月1-2次视频会议的使用需求,超出部分按实际流量/请求计费,成本极低
- S3:存储维护页面的费用几乎可以忽略(GB级存储每月仅几分钱)
- 其他组件:ACM证书免费,CloudFront健康检查无额外费用
为什么比之前的方案更好
- 彻底解决DNS缓存问题:用户始终访问CloudFront入口,切换逻辑在边缘节点完成,无需客户端刷新DNS
- 无需持续运行任何高成本服务:负载均衡的月费直接省掉,EC2仅在需要时启动
- 原生支持HTTPS:通过ACM免费证书轻松满足HTTPS需求
内容的提问来源于stack exchange,提问作者marty
相关产品推荐
相关产品推荐

