我有一个网站s3post.cf从.json.gz
获得AWS CloudFront distribution,其中有S3 bucket作为其起源。
我已经使用another bucket为该存储桶启用了跨区域复制,并设置了第二个CloudFront distribution。
在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 CNAME解析为任何CloudFront分配,该请求仍然会到达CloudFront - 但CloudFront与任何Web服务器或代理一样,仍然不知道解析路径。它只知道浏览器认为您想要的网站 - 地址栏中显示的主机名。无论DNS如何配置,这都是为您的请求提供服务的分发。
这种策略不起作用。
我认为您现在可以使用Origin Groups和CloudFront原始故障转移来实现此目的。 https://aws.amazon.com/about-aws/whats-new/2018/11/amazon-cloudfront-announces-support-for-origin-failover/