在aws cloudfront url中隐藏s3路径

时间:2017-12-04 21:02:17

标签: amazon-s3 amazon-cloudfront

我正在努力确保我在AWS CloudFront文档或其他任何地方都没有遗漏任何内容......

我在CloudFront网络发布中配置了一个(非公开的)S3存储桶作为源(即我不认为这很重要,但我使用的是签名网址)。

让我们说一个S3路径中的文件就像 /someRandomString/someCustomerName/someProductName/somevideo.mp4

因此,CloudFront生成的网址可能类似于:

https://my.domain.com/someRandomString/someCustomerName/someProductName/somevideo.mp4?Expires=1512062975&Signature=unqsignature&Key-Pair-Id=keyid

是否有办法在生成的URL上模糊实际文件的路径。文件名前的所有3个部分都可以更改,所以我不想使用" Origin Path"在原始设置上隐藏路径的乞讨。通过这种方法,我将不得不创建许多映射到相同存储桶但不同路径的源。如果这是唯一方式,那么每个分发25个来源的限制将是一个问题。

理想情况下,我希望得到类似

的内容

https://my.domain.com/someRandomObfuscatedPath/somevideo.mp4?Expires=1512062975&Signature=unqsignature&Key-Pair-Id=keyid

注意:我也在使用自己的域名/ CNAME。

由于 克里斯

2 个答案:

答案 0 :(得分:0)

一种方法是使用lambda函数,该函数接收S3文件的路径,将其复制到混淆的目录(可能具有从源到源的简单映射),然后返回复制文件的签名URL。这样可以确保只有模糊的路径在外部可见。

当然,这(可能)会使数据存储增加一倍,因此您需要某种方式来清理混淆的文件夹。可以采用基于时间的方式进行操作,因此,如果每个签名的URL预计在24小时后过期,则可以基于日期创建文件夹,并且每个混淆的目录都可以每隔一天删除一次。

或者,您可以使用诸如tinyurl.com之类的服务或类似的服务来创建映射。这样会容易得多,可以节省存储空间,等等。唯一的缺点是它不会反映您的域名。

如果您有能力修改域的路由,那么这不是问题,但是我认为这不是选择。

答案 1 :(得分:-1)

混淆不是一种安全形式。

如果您希望控制用户可以访问的对象,则应使用预签名网址 Cookie 。这样,您可以通过S3或CloudFront授予对私有对象的访问权限,而不必担心人们可以访问其他对象。

请参阅:Serving Private Content through CloudFront