为什么S3和Google Storage存储桶名称是全局命名空间?

AJB*_*AJB 32 amazon-s3 google-cloud-storage

这令我感到困惑.我显然可以理解为什么帐户ID是全球性的,但为什么桶名?

如果有这样的话会更有意义:https://accountID.storageservice.com/bucketName

哪个会在accountID下命名空间桶.

我错过了什么,为什么这些显然精英建筑师选择以这种方式处理桶名?

Mic*_*bot 49

"存储桶名称空间是全局的 - 就像域名一样"

- http://aws.amazon.com/articles/1109#02

这不仅仅是巧合.

原因似乎很简单:可以通过与存储桶名称相同的自定义主机名访问存储桶及其对象...并且存储桶可以选择托管整个静态网站 - S3自动将来自传入Host:标头的请求映射到同名的桶.

在S3中,这些变体URL引用存储桶"bucket.example.com"中的相同对象"foo.txt".第一个适用于启用静态网站托管,需要DNS CNAME(或Alias路由53)或指向区域REST端点的DNS CNAME; 其他人不需要配置:

http://bucket.example.com/foo.txt
http://bucket.example.com.s3.amazonaws.com/foo.txt
http://bucket.example.com.s3[-region].amazonaws.com/foo.txt
http://s3[-region].amazonaws.com/bucket.example.com/foo.txt   
Run Code Online (Sandbox Code Playgroud)

如果对象存储服务需要一种简单的机制来Host:将HTTP传入请求中的标头解析为存储桶名称,则存储桶名称命名空间也必须是全局的.看来,其他任何事情都会使实施变得更加复杂.

对于主机名是可映射到斗名,东西必须是全球唯一的,因为显然没有任何两个水桶可以以相同的主机名作出回应.应用于存储桶名称的限制本身不会产生歧义.

许多潜在客户似乎也不希望在存储桶名称中识别其帐户.

当然,如果您想要的存储桶名称不可用,您可以随时将您的帐户ID或任意随机字符串添加到您想要的存储桶名称,例如jozxyqk-payroll,jozxyqk-personnel.

  • 此[link](https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html)应该有助于进一步理解此答案。 (2认同)
  • 我在这里没有得到一点:“其他任何事情,似乎都会使实现显着复杂化。”。我们可以将主机名映射到用户/bucket_name。在这种情况下,我没有看到任何复杂的情况。你能解释更详细的吗?谢谢。 (2认同)