S3静态网站中的目录列表

时间:2012-02-12 22:58:55

标签: amazon-s3 amazon-web-services

我已经设置了一个S3存储桶来托管静态文件。

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

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

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

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

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

7 个答案:

答案 0 :(得分:31)

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

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

您可以在此s3广告管理系统上看到该脚本的实际示例(在网站模式下):http://data.openspending.org/

答案 1 :(得分:8)

还有这个解决方案:https://github.com/caussourd/aws-s3-bucket-listing

https://github.com/rgrp/s3-bucket-listing类似,但我无法使用Internet Explorer。所以https://github.com/caussourd/aws-s3-bucket-listing适用于IE,并且还增加了按名称,大小和日期排序文件的可能性。在缺点方面,它不会跟随文件夹:只显示一个级别的文件。

答案 2 :(得分:5)

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

如果您正在共享HTTP文件,您可能希望也可能不希望人们列出存储桶(文件夹)的内容。如果您希望在有人输入存储桶名称时列出存储桶内容(http: //s3.amazonaws.com/bucket_name/),然后编辑访问控制列表并为Everyone组授予访问级别Read(并对存储桶的内容执行相同操作。)如果您不想要存储桶内容列表-able但是想要在其中共享文件,禁用存储桶本身的Everyone组的读取访问权限,然后为存储桶中的各个文件启用读取访问权限。

答案 3 :(得分:4)

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

答案 4 :(得分:4)

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

答案 5 :(得分:4)

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

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

不打算在你自己的桶上部署(对我来说,没有意义)。

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

如果您希望获得访问权限,可以使用传统方法对当前网站的用户进行身份验证。

希望这也有帮助!

答案 6 :(得分:3)

我创建了一个更简单的解决方案。只需将index.html文件放在文件夹的根目录下即可完成工作。无需配置。 https://github.com/prabhatsharma/s3-directorylisting