我们正在使用Cloudfront前端一个Web应用程序(带有s3,lambda,athena等的myapp.com) 在发布新版本之前,我们将创建一个全新的发行版(next.myapp.com),其中包含新的代码和内容,进行测试,然后希望使其成为myapp.com的实时版本。但这似乎不可能。
多个Cloudfront发行版不能具有相同的CNAME,因此我们无法更改myapp.com的DNS条目以指向新服务。 更改发行版意味着随着新配置在世界各地的普及存在延迟。
是否可以使用亚马逊基础设施来做到这一点?还是我这样做完全错误?希望能够尽快迁移实时服务,但是如果发布中断某些问题,仍然可以使用现有版本进行手动故障回复
答案 0 :(得分:2)
如果遵循这些步骤,则仅在很短的停机时间内即可实现。
使用正确的证书创建新的分发,但不要使用备用域名,并使其稳定。
更改站点的DNS,使其指向新的分发。这不会产生您想像的负面影响,因为该站点继续在现有发行版上工作。 CloudFront不会在到达端点之间进行区分-仅查看SNI和主机标头,并将它们与备用域名进行匹配-因此,旧版本将继续处理流量。
编辑现有发行版以删除备用域名。您无需等待它返回到“已部署”状态。
编辑新发行版以添加备用域名。您可能不得不尝试多次,但是最终将被接受。
答案 1 :(得分:0)
诀窍是使用*.myapp.com
作为新分发的CNAME,切换DNS记录以指向新分发,并在切换有效后清除所有内容。
请参见Moving an Alternate Domain Name to a Different CloudFront Distribution。
如果不联系AWS,则无法对二级域(myapp.com
)执行此操作。解决方案是将www.myapp.com
用于实时版本,并且仅对从myapp.com
到www.myapp.com
的HTTPS重定向(或使用S3进行重定向,但仅使用HTTP)进行另一分发。此发行版本的CNAME无需更新。