2016-01-22 41 views

回答

3

看来,你的要求是:Amazon S3存储

  • 内容
  • 内容通过亚马逊的CloudFront的
  • 内容服务应该是私有的,但有办法让特定的人认为它

这可以通过使用预先签名的URL来完成。这些网址只能在有限的时间内运行。

当您的应用程序确定用户有权查看图像时,它可以生成一个预先签名的URL,在一段有限的时间内授予访问权限。正如您一样,只需在<IMG>标签中使用此URL即可。

参见:

由于在Amazon S3中的内容将是私有的(因此用户无法绕过CloudFront的直接访问它),你还需要授予CloudFront权限来访问S3中的内容。请参阅:Using an Origin Access Identity to Restrict Access to Your Amazon S3 Content

另一种选择是,使用Signed Cookies而不是每次创建预签名URL。但是,这并不能对访问单个对象进行细粒度的控制 - 更重要的是授予对多个对象(如订阅区域)的访问权限。

+0

还有一个使用热链接保护的选项 - 虽然这不是一个完美的答案,但现在可以使用AWS WAF与CloudFront相结合。我同意你的回答,并建议使用签名URL来代替 - 但是如果将该功能添加到网站很棘手,请参阅在WAF中检查可能更直接。 – alexjs