关于亚马逊S3:是否可以通过S3托管的内容来具有index.html功能?

Is there a way to have index.html functionality with content hosted on S3?

有没有一种方法可以使S3默认为index.html页面? 例如:我的存储桶对象清单:

1
2
3
/index.html
/favicon.ico
/images/logo.webp

致电www.example.com/index.html效果很好! 但是,如果要致电www.example.com/,我们将获得403或REST对象,其中列出了XML文档,具体取决于存储桶级ACL的配置方式。

那么,问题就来了:有没有办法让S3上托管的内容具有index.html功能?


对于3年后仍在为此奋斗的人们,让我补充一些重要信息:

您网站的网址(以及您必须指向DNS的网址)不是

.s3-us-west-2.amazonaws.com,但是

.s3-website-us-west-2.amazonaws.com

如果使用第一个,则无论您配置多少索引文档,它都无法按预期工作。

对于特定示例,请考虑:

  • http://www-example-com.s3.amazonaws.com/index.html可以使用。
  • http://www-example-com.s3.amazonaws.com/失败,出现AccessDenied
  • http://www-example-com.s3-website-us-west-2.amazonaws.com/可以使用!

要获取真实的网站地址,请转到S3管理控制台,选择目标存储区,然后依次选择PropertiesStatic Website Hosting。它将显示将起作用的网站URL。


Amazon S3现在支持索引文档

可以将存储桶的索引文档设置为index.html之类的内容。访问站点的根目录或包含该名称的文档的子目录时,将返回该文档。

使用aws cli非常简单:

1
aws s3 website $MY_BUCKET_NAME --index-document index.html

您可以从AWS管理控制台设置索引文档:

enter image description here


您可以通过Amazon CloudFront链接轻松解决它。在Amazon CloudFront,您可以修改根对象。您可以在此处下载管理器:m1.mycloudbuddy.com/downloads.html。


由于时间已经很久了,所以提出了这个问题,并且Amazon S3更改了其界面。我想用更新的屏幕截图回答。

我们需要为S3启用"静态网络托管"以充当网络托管。
-转到"属性"->单击静态虚拟主机->选择"使用此存储桶托管网站"
-输入索引文档(默认情况下为index.html),错误文档和重定向规则(如果有)。
Selecting static web hosting

use-this-bucket-to-host-a-website

正如在Stack Overflow上的答案中所回答的那样,虚拟主机链接为:http://bucket-name.s3-website-region.amazonaws.com


是。使用AWS Cloudfront,您可以分配默认文件。


我建议从2006年开始阅读此线程(在Amazon Web Services开发人员连接上)。似乎没有简单的解决方案。


您可以使用dns webforwards和伪装来做到这一点。只是转到index.html的完整路径

www.example.com转发到http://www.example.com.s3.amazonaws.com,并确保隐藏输出。


推荐阅读