我在使用 Amazon S3 桶托管静态网站。为什么桶返回的是对象列表而不是网站的索引页面?

1 分钟阅读
0

我正在使用 Amazon Simple Storage Service(Amazon S3)桶托管静态网站。当我向存储桶发送请求时,看到的是对象的 XML 列表,而不是为网站设置的索引页列表。

简短描述

Amazon S3 桶同时具有网站端点和 REST API 端点。网站端点使用以下格式:

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

REST API 端点使用以下格式:

bucket-name.s3-us-west-2.amazonaws.com

如果向桶发送 GET 请求,则您必须向网站端点发送请求才能使 Amazon S3 返回索引页(在 Amazon S3 控制台中称为“索引文档”)。如果您向 REST API 端点发送 GET 请求,Amazon S3 会返回桶中对象的列表

如果您使用具有 Amazon S3 源的 Amazon CloudFront 分配,还必须将索引页面设置为默认根对象,以确保 Amazon S3 返回索引页面。

重要事项: 端点因 AWS 区域而异。有关各区域的网站端点,请参阅 Amazon S3 网站端点。有关各区域的 REST API 端点,请参阅 Amazon S3 端点

解决方法

按照以下步骤查找桶的网站端点:

  1. 打开 Amazon S3 控制台
  2. 从桶列表中,选择您用来托管静态网站的桶。
  3. 选择属性视图,然后选择静态网站托管
    网站端点是作为端点列出的值。

如果您使用具有 Amazon S3 源的 CloudFront 分配,请按照以下步骤将分配的默认根对象设置为索引页面:

  1. 打开 CloudFront 控制台
  2. 从分配组列表中,选择与您的 S3 桶关联的分配。
  3. 常规视图中,选择编辑
  4. 默认根对象中,输入您的索引页面的对象名称(例如,“index.html”)。
  5. 选择是,编辑

相关信息

网站端点和 REST API 端点之间的主要区别

AWS 官方
AWS 官方已更新 5 年前