Google Cloud Storage Bucket 是否使用 Amazon S3?



我确实设置了一个带有索引的Google Cloud Storage Bucket.html和测试.html以及我进入我的域时所看到的:

请参阅:doc.s3.amazonaws.com/2006-03-01

<?xml version='1.0' encoding='UTF-8'?>
<ListBucketResult xmlns='http://doc.s3.amazonaws.com/2006-03-01'> 
<Name>my-domain.com</Name>
<Prefix></Prefix>
<Marker></Marker>
<IsTruncated>false</IsTruncated>
<Contents><Key>index.html</Key>
<Generation>1555969892676799</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2019-04-22T21:51...</LastModified>
<ETag>"...."</ETag>
<Size>25</Size></Contents><Contents>
<Key>test.html</Key>

等。。

我没有亚马逊账户。

尽管命名空间中存在该字符串,但对该请求的响应并非来自 AWS。

Google Cloud Storage (GCS) 有两个 API。一个是基于JSON的,看起来像大多数Google的API(称为JSON API),另一个是基于XML的,旨在与一些与S3一起使用的云存储工具和库互操作。这个想法是,如果您已经使用过这样的工具,例如Python boto库,则可以通过更改URL和凭据来完成GCS。解析 XML 响应的客户端可能会验证 XML 命名空间,因此它们希望看到类似字符串"http://doc.s3.amazonaws.com/2006-03-01"的内容作为协议的一部分。

您正在向 XML API 发送请求(通过 storage.googleapis.com、BUCKET_NAME.storage.googleapis.com 或通过 CNAME DNS 重定向到 Cloud Storage),因此生成的消息会尝试提供可互操作的响应。

如果我们查看此处找到的 XML API 的文档,我们会发现此处的所有内容都符合预期。 我们看到的是一个XML文档,它有一个叫做http://doc.s3.amazonaws.com/2006-03-01的XML命名空间。 将此视为命名数据类型用法的声明。 这种数据类型(ListBucketResult)似乎是由AWS(亚马逊)指定的,GCP决定在自己的实现中重用这个规范,而不仅仅是实现一个全新的规范,这个规范可能在语义上与已经存在的规范相同。 接口的重用通常对所有人来说都是一件好事。 这可能意味着更容易的可移植性和更少的供应商锁定,以便能够在需要时选择不同的云提供商。

我猜AWS是第一个提供云blob存储的公司,并开创了先例。 看到描述开放标准的 XML 命名空间是很常见的。 我还要猜测,对于云存储提供商应该提供的内容,目前没有开放标准规范。 所以亚马逊有S3,谷歌有谷歌云存储,Azure有Azure Blob存储。

最新更新