Redirect Cloudfront:将整个发行版重定向到新发行版

Redirect Cloudfront:将整个发行版重定向到新发行版,redirect,amazon-s3,amazon-cloudfront,Redirect,Amazon S3,Amazon Cloudfront,我们在S3存储桶中有大量文件(图像),这些文件将由cloudfront分发版提供给用户浏览器。 存储桶中的大多数图像都改为更好的压缩算法,但在接下来的30天内,这些文件仍会缓存在CloudFrontEdge位置 随着时间的推移,我们创建了更多的发行版来交付bucket中现有文件的更新版本。从现在起,我们使用失效,但仍然有现有的发行版仍然在搜索引擎和其他网站中引用 现在,我们希望将每个请求从旧发行版重定向到最新发行版: GET http://old-distribution.amazonaws.c

我们在S3存储桶中有大量文件(图像),这些文件将由cloudfront分发版提供给用户浏览器。 存储桶中的大多数图像都改为更好的压缩算法,但在接下来的30天内,这些文件仍会缓存在CloudFrontEdge位置

随着时间的推移,我们创建了更多的发行版来交付bucket中现有文件的更新版本。从现在起,我们使用失效,但仍然有现有的发行版仍然在搜索引擎和其他网站中引用

现在,我们希望将每个请求从旧发行版重定向到最新发行版:

GET http://old-distribution.amazonaws.com/user/filename.jpg
应将301重定向永久发送到

->http://新建-distribution.amazonaws.com/user/filename.jpg


这可能吗?如果是,如何实现?

是的,这是可能的,需要S3的一点帮助

在AmazonS3中创建一个空bucket。只要名称有效,它就不重要——仅限小写字母、数字和破折号。我们将说
示例bucket

在这个新的bucket中,在bucket属性中的static website hosting下,选择“将所有请求重定向到另一个域”。输入新Cloudfront发行版的主机名,不带
http://

在这上面,请注意
端点:
,它类似于
示例bucket.s3-website-us-east-1.amazonaws.com

保存更改,然后尝试使用浏览器点击新端点。您输入的任何路径都应重定向到新发行版中的同一路径

您刚刚创建了一个源服务器,它将生成希望Cloudfront返回的重定向

使其生效的最后步骤(您可能希望使用为此目的而创建的不同来源进行测试)是:

在旧发行版中,创建一个新的自定义源--而不是“S3源”。使用刚刚测试的端点主机名作为源主机名

请确保将其配置为将所有请求作为HTTP发送到此源站,并且不要将要转发到源站的
主机
头列入白名单,因为这样做不起作用

创建使用此原点的缓存行为匹配路径模式
*
,并删除其他路径模式


您的发行版现在将向新的“自定义源”发送所有请求,这实际上是由S3提供的,并将响应永久移动的
301
,并将浏览器重定向到新发行版中的相同路径。

是的,这是可能的,需要S3的一点帮助

在AmazonS3中创建一个空bucket。只要名称有效,它就不重要——仅限小写字母、数字和破折号。我们将说
示例bucket

在这个新的bucket中,在bucket属性中的static website hosting下,选择“将所有请求重定向到另一个域”。输入新Cloudfront发行版的主机名,不带
http://

在这上面,请注意
端点:
,它类似于
示例bucket.s3-website-us-east-1.amazonaws.com

保存更改,然后尝试使用浏览器点击新端点。您输入的任何路径都应重定向到新发行版中的同一路径

您刚刚创建了一个源服务器,它将生成希望Cloudfront返回的重定向

使其生效的最后步骤(您可能希望使用为此目的而创建的不同来源进行测试)是:

在旧发行版中,创建一个新的自定义源--而不是“S3源”。使用刚刚测试的端点主机名作为源主机名

请确保将其配置为将所有请求作为HTTP发送到此源站,并且不要将要转发到源站的
主机
头列入白名单,因为这样做不起作用

创建使用此原点的缓存行为匹配路径模式
*
,并删除其他路径模式


您的发行版现在将所有请求发送到新的“自定义源”,它实际上由S3提供,并将响应永久移动的
301
,并将浏览器重定向到新发行版中的相同路径。

只需通过
使用
ViewerRequest
OriginRequest
事件即可Lambda@Edge
以重定向


OriginRequest
更好,因为响应是缓存的。

只需通过
使用
ViewerRequest
OriginRequest
事件即可Lambda@Edge
以重定向


OriginRequest
更好,因为响应是缓存的。

如何创建“自定义源”?对我来说,似乎只有创建一个“s3源代码”才有可能。很抱歉造成混淆。输入源域名时,不要从列表中选择bucket,而是手动输入从S3控制台学习到的端点主机名。非常感谢您的澄清。最后一个教训是更改默认缓存行为。无法删除默认条目,并且我找不到任何选项将新创建的缓存行为标记为“默认”。在路径模式中设置星号显然是不够的。如何创建“自定义原点”?对我来说,似乎只有创建一个“s3源代码”才有可能。很抱歉造成混淆。输入源域名时,不要从列表中选择bucket,而是手动输入从S3控制台学习到的端点主机名。非常感谢您的澄清。最后一个教训是更改默认缓存行为。无法删除默认条目,并且我找不到任何选项将新创建的缓存行为标记为“默认”。显然,在路径模式中设置星号是不够的