亚马逊S3保护静态网站

时间:2013-11-27 11:00:42

标签: amazon-web-services amazon-s3 web sign

我正在寻找一组策略来访问S3存储桶中的静态网站,只能使用某个令牌/符号字符串。 我的意思是,是否有可能使静态网站在默认情况下不被所有人阅读,但可以通过http://mybucket.s3-website-location.amazonaws.com/myfolder/index.html?sign=XXXXX等临时访问? 通过此调用,您还应该可以访问“myfolder”文件夹中的所有树。

2 个答案:

答案 0 :(得分:3)

我认为不可能 - 想想你将如何在常规网站上做到这一点,你需要阅读查询字符串,然后做一些查找/逻辑来确定令牌是否有效,即你需要做一些服务器端处理来执行该逻辑。

一旦您需要添加服务器端逻辑,您就不再拥有“静态”网站(即使最终您可能正在提供静态页面)。在这种情况下,S3可能不适合您。

来自aws:http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html

  

您可以在Amazon S3上托管静态网站。在静态网站上,各个网页包含静态内容。它们还可能包含客户端脚本。相比之下,动态网站依赖于服务器端处理,包括服务器端脚本,如PHP,JSP或ASP.NET。 Amazon S3不支持服务器端脚本。

答案 1 :(得分:1)

您只能使用带有过期时间的已签名S3网址,一次为单个网址执行此操作。无法创建可以附加到任何一组URL的签名,这些URL将使它们全部使用签名,但没有它就无法工作。

对不起。

然而,这对于将实际网站作为前端来说相当容易。您必须对网站进行编码,以将每个请求重定向到特定于该对象的签名URL。为此,您需要一个运行您编写的代码的EC2实例。但截至目前,S3并没有办法单独完成这一切。