如何从一个Cloudfront发行版迁移到另一个

时间:2019-04-29 06:08:32

标签: amazon-web-services amazon-cloudfront

我们正在使用Cloudfront前端一个Web应用程序(带有s3,lambda,athena等的myapp.com) 在发布新版本之前,我们将创建一个全新的发行版(next.myapp.com),其中包含新的代码和内容,进行测试,然后希望使其成为myapp.com的实时版本。但这似乎不可能。

多个Cloudfront发行版不能具有相同的CNAME,因此我们无法更改myapp.com的DNS条目以指向新服务。 更改发行版意味着随着新配置在世界各地的普及存在延迟。

是否可以使用亚马逊基础设施来做到这一点?还是我这样做完全错误?希望能够尽快迁移实时服务,但是如果发布中断某些问题,仍然可以使用现有版本进行手动故障回复

2 个答案:

答案 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.comwww.myapp.com的HTTPS重定向(或使用S3进行重定向,但仅使用HTTP)进行另一分发。此发行版本的CNAME无需更新。