2016-09-09 8 views
0

Я создаю ведро Google Cloud Storage через JSON API.Google Cloud Storage Bucket, созданный без ACL, поэтому невозможно обновить

Я могу создать его хорошо, но когда я запрашиваю метаданные для него, я не вижу никакого ACL, несмотря на запрос «полного» доступа. Еще одно ведро, созданное через пользовательский интерфейс, я могу видеть все ACL.

Мне нужно увидеть ACL, чтобы обновить ведро, требуемое поле - это ведро ACL, которое я не совсем понимаю, зачем это необходимо, но без того же ведра, дающего его данные ACL, это означает, что я не могу обновить ковши, которые я создаю.

Я предполагаю, что у меня есть полный доступ на запись к ковшу, когда я его создаю, и попытался создать его с помощью и без предопределенного.

Есть ли что-нибудь, чего я не вижу, почему я не вижу ACL на новых ведрах?

ответ

0

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=" 
} 
0

Создатель ведра всегда является владельцем этого ведра, а владельцы ковша всегда могут видеть ACL ковша. Тем не менее, ACL не являются частью ответа по умолчанию на вызов storage.objects.get. Попробуйте передать параметр URL-запроса «projection = full», что приведет к включению списков ACL.

Звонок «обновление» всегда устанавливает абсолютное полное состояние метаданных в ковше, включая ACL и все остальное. Если вы хотите просто изменить какое-либо свойство ведра, значит, «патч» - это, вероятно, то, что вы хотите использовать.

+0

Спасибо за ваш ответ, но я только что нашел ответ - в ACL просто не существует, но вы можете передать пустое поле, хотя его необходимо ... :) – MarkeD

+1

Пустой ACL такой же, как указание предопределенного ACL «private»: он предоставляет полное разрешение только загрузчику объекта и никаких других разрешений. –