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

时间:2014-06-09 01:37:07

标签: amazon-s3 google-cloud-storage

这令我感到困惑。我显然可以理解为什么帐号ID是全局的,但为什么要说出名字?

使用https://accountID.storageservice.com/bucketName

之类的东西更有意义

在accountID下会命名空间桶。

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

2 个答案:

答案 0 :(得分:41)

  

“存储桶命名空间是全局的 - 就像域名”

     

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

这不仅仅是巧合。

原因似乎很简单:可以通过与存储桶名称相同的自定义主机名访问存储桶及其对象...并且存储桶可以optionally host an entire static web site - S3自动映射传入的请求{ {1}}标题到同名的存储桶中。

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

Alias

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

要使主机名可以映射到存储桶名称,某些必须是全局唯一的,因为显然没有两个存储桶可以响应同一主机名。应用于存储桶名称的限制本身不会产生歧义。

许多潜在客户似乎也不希望在存储桶名称中识别他们的帐户。

当然,您始终可以将您的帐户ID或任意随机字符串添加到所需的广告连播名称,例如: jozxyqk-payroll,jozxyqk-personnel,如果你想要的存储桶名称不可用。

答案 1 :(得分:4)

  

我喝的越多,下面这个概念就越有意义,所以我从对自己实体的接受答案的评论中提升了它:

今晚随机突然出现了另一个想法:

鉴于能够使用各种对象存储服务提供的通用主机名,人们很容易将您的公司(或其他)身份模糊为任何给定数据资源的所有者。

所以,让我们说Black Hat Corphttp://s3.amazonaws.com/obscure-bucket-name/something-to-be-dissassociated.txt‌托管数据资源。

任何非政府实体都很难确定该资源的所有者与对象商店提供商没有合作关系。

没有邪恶的设计,只是客观的实用主义。

这种范式的建筑师可能会有一丝光彩