本地公网HTTPS API的AWS灾备切换方案咨询(需秒级故障转移)
最优解决方案:AWS CloudFront 源站故障转移(Origin Failover)
核心逻辑
用CloudFront的**源站组(Origin Groups)**将本地HTTPS API设为主源,AWS上的API副本设为备用源。CloudFront会持续对主源执行健康检查,一旦主源失效,边缘节点会立刻将流量切换到备用源,实现秒级故障转移,且无需将整个域名的DNS迁移到AWS。
具体操作步骤
- 1. 创建CloudFront分发
- 主源配置为你的本地API公网HTTPS地址,需确保CloudFront能访问该源站——可通过AWS官方提供的CloudFront IP范围列表,在本地防火墙中开放对应IP段权限。
- 备用源配置为AWS上API副本的访问地址,比如API Gateway域名、ALB域名或ECS服务的公网域名。
- 2. 配置源站组与健康检查
- 在CloudFront控制台新建源站组,将上述主源设为主源,备用源设为备用源。
- 启用健康检查:指定API的健康检查端点(如
/health),设置检查间隔(建议10秒以内)、失败阈值(如连续2次失败触发切换)。健康检查支持HTTPS,可配置证书验证规则。
- 3. 绑定自定义域名(可选)
- 若需继续使用原有API域名访问,仅需将该子域名的DNS记录改为CNAME,指向CloudFront分发域名即可,无需迁移整个域名的DNS服务器,原域名其他记录不受影响。
- 在AWS Certificate Manager(ACM)上传自定义SSL证书,关联到CloudFront分发,保障HTTPS访问正常。
- 4. 验证故障转移效果
- 手动模拟本地API故障(如暂停服务或阻断CloudFront访问),观察CloudFront是否在健康检查失败后立即切换到AWS源站。
- 恢复本地API后,CloudFront会自动切回主源(默认自动恢复,也可配置为手动切换)。
对比Route53的优势
- 秒级切换:CloudFront的健康检查由边缘节点本地执行,主源失效后无需等待DNS缓存过期,直接完成切换,真正实现秒级故障转移。
- 无需全域名DNS迁移:仅修改API对应子域名的DNS记录,原域名其他服务的配置完全不受影响。
- 附加价值:CloudFront自带CDN加速、DDoS防护、缓存策略等功能,可同步提升API的性能与安全性。
备选方案:API Gateway + Lambda 自定义路由
如果需要更灵活的流量控制逻辑(如自定义健康检查规则、灰度切换),可采用API Gateway作为统一入口,配合Lambda实现路由决策:
- 将API Gateway设为访问入口,配置两个集成目标:本地API与AWS API副本。
- 编写Lambda函数,在API Gateway的请求前触发器中执行健康检查,根据检查结果将请求转发至对应源站。
- 该方案同样能实现秒级切换,但需额外开发和维护Lambda函数,复杂度相对更高。
内容的提问来源于stack exchange,提问作者Valentin Kolesov
相关产品推荐
相关产品推荐

