这让我感到困惑。我显然可以理解为什么帐户ID是全局的,但是为什么要使用存储桶名称?
拥有类似这样的东西不是更有意义:https : //accountID.storageservice.com/bucketName
哪个名称空间将存储在accountID下。
我想念的是,为什么这些显然是精英建筑师选择用这种方式来处理存储桶名称?
“存储桶名称空间是全局的,就像域名一样”
这绝非偶然。
原因似乎很简单:可以通过与存储桶名称相同的自定义主机名来访问存储桶及其对象……并且存储桶可以选择托管整个静态网站-S3会自动将传入Host:
标头中的请求映射到相同名称的存储桶。
在S3中,这些变体URL在存储桶“ bucket.example.com”中引用了相同的对象“ foo.txt”。第一个在启用静态网站托管的情况下工作,并且需要指向区域REST端点的DNS CNAME
(或Alias
在Route 53中)或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
如果对象存储服务需要一种简单的机制将Host:
HTTP传入请求中的标头解析为存储桶名称,则存储桶名称命名空间也需要是全局的。看来,其他任何事情都会使实施复杂化。
对于主机名是可映射到斗名,东西必须是全球唯一的,因为显然没有任何两个水桶可以以相同的主机名作出回应。应用于存储桶名称本身的限制不留歧义的余地。
似乎许多潜在客户也不想在存储桶名称中标识其帐户。
当然,如果您想要的存储桶名称不可用,您总是可以将帐户ID或任何随机字符串添加到所需的存储桶名称,例如jozxyqk-payroll,jozxyqk-personnel。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句