Cloudfront:将整个发行版重定向到一个较新的发行版上

问题描述 投票:0回答:2

我们在S3 Bucket上有大量的文件(图片),这些文件将由cloudfront分布式提供给用户浏览器.bucket中的大部分图片改用了更好的压缩算法,但这些文件在未来30天内仍然缓存在cloudfront边缘位置。

随着时间的推移,我们又创建了一些分发,以交付bucket中现有文件的更新版本。从现在开始,我们使用Invalidation,但仍有现有的发行版仍然被搜索引擎和其他网站引用。

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

GET http://old-distribution.amazonaws.com/user/filename.jpg

应该发送301重定向永久到

-> http:/-distribution.amazonaws.comuserfilename.jpg

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

redirect amazon-s3 amazon-cloudfront
2个回答
3
投票

是的,这是可能的,在S3的帮助下。

在Amazon S3中创建一个空桶。 名字并不关键,只要是有效的--只能用小写字母、数字和破折号。 我们会说 example-bucket.

在这个新的桶中,在桶属性中,静态网站托管下,选择 "将所有请求重定向到另一个域名"。 输入新的Cloudfront发行版的主机名,不含 http://.

就在那上面,注意 Endpoint:,这将是类似于 example-bucket.s3-website-us-east-1.amazonaws.com.

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

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

实现这一功能的最后步骤是--您可能希望使用为此目的创建的不同原点进行测试。

在您的旧版本中,创建一个新的 习俗 渊源 -- -- 一个 "S3起源"。 使用你刚才测试的端点主机名作为起源主机名。

确保你将其配置为将所有请求以HTTP的方式发送到这个原点,并且不要把 Host 头来转发到原点,因为那是行不通的。

创建一个与路径模式相匹配的缓存行为 * 使用这个原点,并删除其他原点。

您的发行版现在会将所有请求发送到新的 "自定义原点",这实际上是由S3提供的,并将以以下方式响应。301 Moved Permanently 并将浏览器重定向到新发行版中的相同路径。


0
投票

只需使用 ViewerRequestOriginRequest 活动通过 Lambda@Edge 来重定向。

OriginRequest 是比较好的,因为响应被缓存了。

© www.soinside.com 2019 - 2024. All rights reserved.