创建S3文件夹别名或将URL路径重定向到S3文件夹

时间:2017-07-14 11:03:55

标签: amazon-s3 amazon-cloudfront

是否可以为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)

2 个答案:

答案 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来使较早的缓存无效。