如何配置amazon cloudfront阻止某些S3存储桶文件访问?

时间:2016-02-03 09:50:01

标签: amazon-s3 amazon amazon-cloudfront

在S3上,我们将所有文件都设为私有。用户无法通过S3链接加载任何文件。但它们都是通过云端链接公开的。

如何限制对./restricted.txt的访问? (只有使用签名URL链接的用户才能通过cloudfront链接看到该文件),。/ not_restricted.txt必须同时公开。

我是怎么做到的。

我创建了/ public& s3上的/ private文件夹,将我的私有/公共文件分开,创建指向/ public的cloudfront origin。所以我/ / public文件夹中的所有S3文件都是公共的,我可以使用没有公共前缀/img1.jpg istead /public/img1.jpg的链接加载它们,因为cloudfront将/ public视为根文件夹。

现在,我在/ private或/ public文件夹上的任何其他位置的所有文件都是通过S3和cloudfront链接保密的。

但我不知道如何为具有cloudfront路径的/private/restricted.txt文件创建签名URL。我可以创建使用S3路径的签名网址,但我需要有云端链接。

提前致谢。

1 个答案:

答案 0 :(得分:2)

在CloudFront中,存在“缓存行为”的概念。根据URL路径,这些允许您修改缓存行为,包括使用签名URL / Cookies的要求。

如果我理解你想要:

  • 维护您的私人S3广告
  • 通过CloudFront(/ public)维护一些公共路径
  • 拥有通过CloudFront(/ private)的私人路径

这可以通过在CloudFront分配中添加新的缓存行为并将Restrict Viewer Access (Use Signed URLs or Signed Cookies)设置为是来完成。例如:

CloudFront Cache Policy

重申一下,实现这一目标的最简单方法是

  • 在S3和CloudFront之间使用OAI
  • 将单个CloudFront分配指向您的S3存储桶(root,而不是/ public)
  • 创建新的缓存行为,为/ private
  • 启用签名的URL

如果这不能回答您的问题,例如,如果您需要维护路径并且不能在URL架构中使用/ public和/ private,请通过评论告诉我,我可以尝试详细说明。谢谢!