Google Cloud Storage Bucket 创建时没有可用的 ACL,因此无法更新



我正在通过JSON API创建一个Google云存储桶。

我可以很好地创建它,但是当我查询元数据时,我看不到指定的任何ACL,尽管要求"完全"访问。通过UI创建的另一个桶,我可以看到所有的ACL。

我需要看到ACL来更新一个桶,一个必需的字段是桶ACL,我不太明白为什么需要,但是没有相同的桶给出它的ACL数据,这意味着我不能更新我创建的桶。

我假设我有完全的写访问桶一旦我创建它,并尝试创建它与不预定义acl。

是否有什么我错过了为什么我不能看到新桶上的ACL ?

桶的创建者始终是该桶的所有者,桶的所有者始终可以看到桶的ACL。也就是说,acl不是对storage.objects.get调用的默认响应的一部分。尝试传入URL查询参数"projection=full",这将导致包含acl。

"update"调用总是设置桶元数据的绝对完整状态,包括acl和其他所有内容。如果您希望简单地修改bucket的某些属性,那么您可能需要使用"patch"调用。

ACL没有返回,因为它不存在于桶中。但是要进行更新,您可以简单地将一个空列表传递给PATCH方法,它将工作,即使acl字段仍然是必需的:

PUT https://www.googleapis.com/storage/v1/b/blahblahblxxxxlifecycle?key={YOUR_API_KEY}

{
 "acl": [
 ],
 "kind": "storage#bucket",
 "id": "blahblahblxxxxlifecycle",
 "selfLink": "https://www.googleapis.com/storage/v1/b/blahblahblahffflifecycle",
 "projectNumber": "1080525199262",
 "name": "blahblahblxxxxlifecycle",
 "timeCreated": "2016-09-09T21:20:56.490Z",
 "updated": "2016-09-09T21:20:56.490Z",
 "metageneration": "1",
 "location": "US",
 "versioning": {
  "enabled": true
 },
 "storageClass": "STANDARD",
 "etag": "CAE="
}

最新更新