2012-02-12 57 views
30

我已经设置了一个S3存储区来存放静态文件。S3中的目录列表静态网站

当使用网站端点(http://.s3-website-us-east-1.amazonaws.com/):它迫使我设置索引文件。当找不到文件时,它会抛出一个错误,而不是列出目录内容。

使用s3端点(.s3.amazonaws.com)时:我得到这些文件的XML列表,但我需要一个HTML列表,用户可以单击该文件的链接。

我已经尝试将所有文​​件和存储桶本身的权限设置为AWS控制台中“所有人”的“列表”,但仍然没有运气。

我也尝试了一些javascript替代品,但它们要么不在网站url(重定向到索引文件)下工作,要么根本不工作。作为最后的手段,可折叠的javascript列表比没有好,但我没有找到一个好的。

这可能吗?如果是这样,我是否需要更改权限,ACL或其他?

回答

3

我发现s3browser,它允许我在主网站上设置一个允许浏览s3存储桶的目录。它工作得非常好,并且非常容易设置。

+0

你能指点我如何做到这一点的文件?欢呼声 – gollumullog 2013-04-02 21:52:23

+1

所以我猜测,因为这是“正确的”答案,没有人找到了在S3上完成这个100%的方法。此解决方案需要另一台服务器来托管小应用程序。 – 2013-06-15 22:47:35

4

这可能会解决您的问题。 Everyone组的安全设置: (您需要为此使用bucketexplorer.com软件)

如果您要共享HTTP文件,您可能希望或不希望人们能够列出存储桶(文件夹)的内容。 )如果您希望某人输入存储桶名称(http://s3.amazonaws.com/bucket_name/)时列出存储桶内容,请编辑访问控制列表,并为Everyone组提供Read(和)的访问级别)如果您不希望存储桶内容列表可用,但希望共享其中的文件,请禁用存储区本身的Everyone组的读取访问权限,然后为存储区启用读取访问权限存储桶中的单个文件。

+0

我尝试了http://s3.amazonaws.com/bucket_name/方法,它提供了XML列表而不是HTML列表。 – iJeep 2012-05-18 20:17:03

4

我有类似的问题,并创建了JavaScript和iframe的解决方案,很适合在S3网站文件中列出目录。您只需将几个.html文件放入要列出的目录中即可。你可以在这里找到它: https://github.com/adam-p/s3-file-list-page

+0

iFrame是一个好主意。我最终找到了一个计划去做我所需要的。我会发布一个答案。 – iJeep 2012-07-23 13:49:13

+0

:这个iframe hack很可能被S3中的CORS支持介绍(2012-09-01)所取消。因此,我不保证演示网站将继续运行。 – 2013-03-04 10:21:22

26

我创建JS的简单一点,负责创建HTML样式,你正在寻找一个目录索引:https://github.com/rgrp/s3-bucket-listing

自述有处理Amazon S3的“网站”桶的具体说明:https://github.com/rgrp/s3-bucket-listing#website-buckets

您可以在此s3存储区中看到活动脚本的实例(网站模式下):http://data.openspending.org/

+0

你认为你可以提供一个生成什么样的视图的现场演示?否则,也许一些截图? – 2013-06-05 10:10:30

+0

@MerynStol我已经在答案中添加了一个活动例子的链接。请注意,有一点点CSS你可以让它看起来更好(我的目标是模仿经典的Apache风格目录列表...) – 2013-06-25 18:20:15

+0

谢谢!我喜欢它:) – 2015-05-27 07:32:24

4

在纯JavaScript和AWS SDK JavaScript API中使用另一种方法库。不需要PHP或其他引擎只需要纯粹的网站(Apache甚至IIS)。

https://github.com/juvs/s3-bucket-browser

不是故意对你自己的水桶部署(对我来说,没有有意义)。

使用来自AWS的新IAM用户,您可以为您的存储桶提供更具体和安全的访问。无需将您的存档发布到网站并公开发布。

如果您想要保护访问,您可以使用常规方法为当前网站对用户进行身份验证。

希望这个帮助呢!

+0

我喜欢这个。也许我们可以将HTML/JS/CSS文件上传到作为静态网站的S3存储桶中。我会试试这个。 – 2014-05-20 06:17:22