Публичный доступ при вставке объекта с помощью Google Cloud Storage JSON API

Я вставляю изображения с помощью JSON API Google Cloud Storage, как показано на образец, который необходимо опубликовать с разрешениями на чтение. HTTP-запрос выглядит так:

      var request = gapi.client.request({
      'path': '/upload/storage/v1beta2/b/' + BUCKET + '/o',
      'method': 'POST',
      'params': {'uploadType': 'multipart'},
      'headers': {'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'},
      'body': multipartRequestBody});

Моя корзина уже имеет разрешение «Читатель» для «Все пользователи», но вставленные объекты не наследуют это свойство. Доступ к следующему URL-адресу запрещен, пока я не установлю флажок «Опубликовать публично». http://commondatastorage.googleapis.com/bucketname%2Ffilename

Мне нужно, чтобы это изображение было доступно сразу после вставки. Есть ли способ поделиться как часть запроса вставки HTTP?


person Ashish    schedule 26.01.2014    source источник


Ответы (1)


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

Если у вас есть gsutil, вы можете легко сделать это свойство общедоступным, читая так:

gsutil defacl set public-read gs://mybucket

В качестве альтернативы вы можете изменить свой вызов, чтобы явно установить разрешения. Предположительно, часть вашей многокомпонентной загрузки представляет собой описание создаваемого объекта в формате JSON. Одно из этих свойств - «acl», которое вы можете установить, как хотите.

person Brandon Yarbrough    schedule 26.01.2014
comment
Спасибо, Брэндон, нет возможности сделать это на cloud.google.com/console? Устанавливая опору на уровне объекта, вы имеете в виду добавление следующего кода в вопрос? 'acl': {'Все': 'public-read'} - person Ashish; 27.01.2014
comment
К сожалению нет. Стандартные списки ACL, такие как общедоступные, пока не поддерживаются в документе JSON. Ближайшее, что вы могли бы получить, это acl: [{'entity': 'allUsers', 'role': 'READER'}]. - person Brandon Yarbrough; 27.01.2014
comment
Кроме того, нет, я не верю, что списки ACL объектов по умолчанию доступны через консоль, только инструмент командной строки и API. - person Brandon Yarbrough; 27.01.2014
comment
Спасибо, Брэндон, установка ACL по умолчанию с помощью команды gsutil, которую вы дали, сработала для меня. Теперь все вставленные файлы по умолчанию доступны для чтения. - person Ashish; 28.01.2014
comment
Обновление: предопределенные ACL-списки стали доступны в JSON API v1. Ура! - person Brandon Yarbrough; 28.08.2014