托管静态网站时,为什么Amazon S3存储桶名称必须与网站名称相同

Xia*_*hen 13 amazon-s3 bucket

我想在S3上主持静态网站,即.. abcd.com.它需要一个与"abcd.com"相同的存储桶名称

然后我发现abcd.com已被其他人占用.

所以这是我的问题,为什么存储桶名称必须与网站名称相同.因为有53号路由将网站映射到桶端点,所以没有必要进行此限制.

这有什么理由吗?

Mic*_*bot 7

简短的回答是,"亚马逊就是这样设计的."

如果存储桶名称与域名不同,S3将如何知道用于为给定域提供请求的存储桶?

您不能说"Route 53",因为S3是在Route 53之前创建的,即使您没有使用Route 53 for DNS,S3中的网站托管也是如此.

同样,它不能是存储桶上的配置选项,因为这只会产生一系列新问题 - 如果域的前任所有者仍然使用您的域配置了存储桶,则会遇到完全相同的问题就像你一样,现在.

您仍然可以在S3上托管您的站点,但使用不匹配的存储桶名称,您需要在同一区域的EC2中使用反向代理服务器,在每个请求中重写主机头以匹配存储桶名称,或者,您可以使用CloudFront为了达到类似的目的,因为桶名称不需要匹配 - CloudFront也会重写Host头.

  • 技术原因是原始主机名(即在浏览器地址栏中输入的主机名)是 HTTP 请求中唯一可用的权限信息。DNS 解析链不会被保留,因此网络服务器不知道您如何通过 CNAME 级联等到达它。如果您配置“www.example.com CNAME www.google.com”,然后转到在网络浏览器中使用“www.example.com”,您将连接到 Google 拥有的网络服务器,但您**不会**看到 www.google.com 的内容。您将从 Google 服务器收到错误,因为它没有向您显示“www.example.com”的任何内容。 (10认同)
  • 呃...存储桶名称在 URL 中...但它仍然需要与转发到它的域命名相同?这没有道理。S3 提供的 URL 如下所示:“<bucketName>.s3-website-us-west-2.amazonaws.com”,但我无法将 www.foo.com 重定向到它而不得到“Code: NoSuchBucket”错误。 (3认同)