是否可以为S3存储桶中的文件夹设置别名?
这是我想要实现的目标: 我想主持一个包含各种项目文档的网站,并将这些项目的新版本的文档上传到S3存储桶中的文件夹。
Bucket内容将是这样的:
<projectA>
|---<0.1.0>
|---index.html
|---<0.2.0>
|---index.html
<projectB>
|---<1.0.0>
|---index.html
|---<1.1.0>
|---index.html
index.html
现在,我希望将任何项目的最新版本别名为“最新”。因此,当我上传projectB 1.2.0时,我从版本1.1.0中删除别名'latest'并将别名添加到新上传的'1.2.0'。
projectB/1.2.0
的索引页面的网址为xxx.cloudfront.net/projectB/latest/index.html
这样的事情是否可能?也许在cloudfront中有一些重定向? (或路线53)
答案 0 :(得分:1)
CloudFront的两种可能方式。
最简单的方法是设置指向您的存储桶的CloudFront,然后使用“原始路径”值。在您的示例中,您将“原始路径”设置为projectB/1.2.0
,并将您的分布称为“ latest.mydomain.com”。更新文件时,请转到原点并更改原点路径。
一个更复杂的版本是使用Lambda函数。将lambda函数连接到“原始请求”,因为该函数专门用于重写URL。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html
答案 1 :(得分:1)
最坏的解决方案是在每个项目中都有一个名为最新的文件夹,然后只要有新版本的文档发布到任何项目,也上传该index.html到最新文件夹以及特定版本的文件夹。
可能必须为原始路径项目/ latest 在CloudFront中无效,以使其立即生效,而不是等待TTL来使较早的缓存无效。