amazon s3 - Why are S3 and Google Storage bucket names a global namespace? -
this has me puzzled. can understand why account id's global, why bucket names?
wouldn't make more sense have like: https://accountid.storageservice.com/bucketname
which namespace buckets under accountid.
what missing, why did these elite architects choose handle bucket names way?
“the bucket namespace global - domain names”
that's more coincidental.
the reason seems simple enough: buckets , objects can accessed through custom hostname that's same bucket name... , bucket can optionally host entire static web site -- s3 automatically mapping requests incoming host:
header onto bucket of same name.
in s3, these variant urls reference same object "foo.txt" in bucket "bucket.example.com". first 1 works static website hosting enabled , requires dns cname
(or alias
in route 53) or dns cname pointing regional rest endpoint; others require no configuration:
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
if object store service needs simple mechanism resolve host:
header in http incoming request bucket name, bucket name namespace needs global. else, seems, complicate implementation significantly.
for hostnames mappable bucket names, something has globally unique, since no 2 buckets respond same hostname. restriction being applied bucket name leaves no room ambiguity.
it seems many potential clients wouldn't have account identified in bucket names.
of course, add account id, or random string, desired bucket name, e.g. jozxyqk-payroll, jozxyqk-personnel, if bucket name wanted wasn't available.
Comments
Post a Comment