我正在通过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="
}