亚马逊网络服务–S3静态网站索引文件

我试图将我的静态网站上传到我的s3桶.我已经设法完成了这一点.我创建了my_bucket,然后创建一个名为test_folder的sub_bucket,并且我上传了我所有的css,html,js文件.

现在看起来就像这样:

 my_bucket/
  test_folder
    index.html

我可以查看我的index.html,horray! :D.但是我的问题是设置索引文档,因为index.html位于一个sub_bucket:test_folder / index.html当我尝试保存它,给了我

IndexDocument Suffix is not well formed

可以将index.html链接到sub_bucket吗?如果是,怎么样?如果没有,有没有办法实现这一目标?我在这里有一个截图link

最佳答案
虽然经常用于不同的目的,但索引文档原本是在概念上意图成为每个文件夹中所有文件的“索引”(目录列表或其他内容摘要),因此该配置参数指定要返回的索引文档整个桶中的每个文件夹,如果这样的文档存在于文件夹中…这不是整个桶的单一配置“事情”.

如果您的尝试配置已经被S3接受,假设桶名称为“example.com”,则会产生以下影响:

browser address bar          file (object) actually returned
---------------------------  ------------------------------------
http://example.com           example.com/test/index.html
http://example.com/help      example.com/help/test/index.html
http://example.com/foo/test  example.com/foo/test/test/index.html

这实际上是不太可能的.

但是,索引文档的工作原理是这样的:它们在概念上意图与目录层次结构的每个层次上的其他事项有关,当然这些也可以是文件的实际列表,或者可以是“索引”一个更广泛和模糊的和一般的感觉,任何“页面”,如一个着陆页,你想让访问者看到你的网站上的一个特定的“目录”,当然,现代网络通常不是概念化为“目录”,而只是简单的“页面”.

因此,索引文档必须立即在同一个/分隔符下,并且不能在其自己的规范中包含附加的/在其中.

example.com的索引​​文档必须存储在example.com/index.html中(假设“index.html”是您选择的索引文件名) – 它必须存储在其索引的“目录”中,就像在传统的web服务器上,在某些配置中,Web服务器将实际显示文件的目录列表,在“索引”页面在“索引”页面实际存在的情况下用“索引”页替换该目录列表.当然,S3没有默认的目录列表页面功能.

http://docs.aws.amazon.com/AmazonS3/latest/dev/IndexDocumentSupport.html

与索引文档相反,错误文档(如果配置它)是一种全局配置,无论何时在桶内发生404,因此在该条目中支持斜杠.关于这两个条目的性质,AWS控制台的提示很明显,这两个条目的性质在他们的行为上是截然不同的,他们可以视觉上应该更加分开.

你会注意到,“子桶”不是一个实际的术语,对于你所描述的,它是一个在其键(路径)中具有分隔符的对象,它将外观嵌套在目录或文件夹下.

为了清楚起见,我在这个答案中使用了“文件夹”和“目录”这些词,具有常规含义…但是对于技术准确性,我将提到S3对象并不真正以内部的方式存储在一个分层的方式“在目录中”.以这种方式出现,为了实际目的,它的工作方式如此;然而,实际上,/ character虽然接近于对象键中的另一个字符,虽然它作为一个分隔符得到一些特殊的处理,因为它常用作目录分隔符.不像一些更传统的文件系统,数字的“每个目录中的文件”不会对S3造成任何性能问题,并且当大量文件存在时,不需要以与传统文件系统中所需的相同的方式来管理,因为从S3 internally hashes the key(“路径”)每个对象为其内部存储分区逻辑.

转载注明原文:亚马逊网络服务–S3静态网站索引文件 - 代码日志