如何从一个云端分布迁移到另一个

How to migrate from one cloudfront distribution to another

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

多个 Cloudfront 分配不能具有相同的 CNAME,因此我们无法更改 myapp.com 的 DNS 条目以指向新服务。 更改分布意味着新配置在世界范围内填充时会有延迟。

有没有办法使用亚马逊基础设施来做到这一点?还是我这样做完全错了?希望能够尽快迁移实时服务,但如果发布有问题,现有版本仍可用于手动故障回复

诀窍是使用 *.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 永远不需要更新。

如果您按照以下步骤操作,只需很短的停机时间就可以做到这一点。

使用正确的证书但没有备用域名创建新分发,并使其稳定下来。

更改站点的 DNS 以指向新的分发。这不会产生您假设的负面影响,因为该站点将继续在现有发行版上工作。 CloudFront 不区分到达端点——它只查看 SNI 和主机 header,将它们与备用域名进行匹配——因此旧分配将继续处理流量。

编辑现有分配以删除备用域名。您无需等待它 return 到 "Deployed" 状态。

编辑新分配以添加备用域名。您可能需要多次尝试,但最终会被接受。