我有一个网站 s3post.cf,它从以 S3 存储桶为源的 AWS CloudFront 分配获取.json.gz
。
我已使用另一个存储桶为该存储桶启用了跨区域复制,并设置了第二个 CloudFront 分配。
在 Route 53 上,我创建了与第一个存储桶cloudfront.s3post.cf
中的文件关联的运行状况检查,并设置 CloudFront 故障转移 -
- 第二个分配
backup.s3post.cf
具有指向其 CloudFront 分配域名的简单路由策略。 - 第一个分发
post.s3post.cf
具有与上述运行状况检查关联的主故障转移策略。 post.s3post.cf
还有一个辅助故障转移策略,该策略使用backup.s3post.cf
(第二个分发)作为其别名。
为了测试此设置,我从运行状况检查文件中删除了公共权限。运行状况检查失败,我的站点仍处于活动状态。但是,两个存储桶中的.json.gz
文件都是公共的,因此我不确定故障转移是否成功。
如何测试post.s3post.cf
是否真的故障转移到backup.s3post.cf
?我不能只删除.json.gz
文件,因为它也因跨区域复制而在第二个存储桶中删除。
检查您的 CloudFront 访问日志将显示请求仍在从主分配提供服务。 您尝试的内容未能考虑 CloudFront 如何决定哪个分配处理给定请求 - 它不是通过 DNS。
CloudFront仅使用浏览器发送的Host:
标头来决定每个传入请求的分发服务。
只要 DNS 别名记录解析为任何 CloudFront 分配,请求仍会到达 CloudFront - 但 CloudFront 与任何Web 服务器或代理一样,仍然不知道解析路径。 它只知道浏览器认为你想要哪个网站 - 地址栏中显示的主机名。 这是将为您的请求提供服务的分配,无论 DNS 是如何配置的。
这种策略是行不通的。
我认为您现在可以使用源组和 CloudFront 源故障转移来完成此操作。 https://aws.amazon.com/about-aws/whats-new/2018/11/amazon-cloudfront-announces-support-for-origin-failover/