Невозможно опубликовать File Object публично, даже если ACL установлен - PullRequest
0 голосов
/ 05 декабря 2018

мы используем @google-cloud/storage @ 2.3.1 и хотим сделать загруженные файлы общедоступными.

Мы создаем наши объекты File, используя метод createWriteStream, как показано в этом примере:

gcFile.createWriteStream({
  predefinedAcl: 'publicRead',
});

Однако в файле все еще отображается Not public в столбце Public access: enter image description here

Мы решили попробовать логическое значение public при создании потока согласно API-ссылка (которая на самом деле является псевдонимом для вышеупомянутого) - файл не является общедоступным:

gcFile.createWriteStream({
  public: true,
});

Далее мы попытались сделать файл общедоступным, используяmakePublic метод объекта File:

const file = gcs.bucket('our_bucket_name').file('file_path_here');
await file.makePublic();
const acl = await file.acl.get();
console.log(acl);

Этот журнал регистрирует следующий ACL для объекта:

[
  [
    { 
      entity: 'owner@our-project-name.iam.gserviceaccount.com',
      role: 'OWNER'
    },
    { 
      entity: 'allUsers', 
      role: 'READER' 
    }
  ],
  { 
    kind: 'storage#objectAccessControls',
    items: 
      [ 
        [Object], 
        [Object] 
      ] 
  }
]

Таким образом, похоже, что мы выполнили следующее условие задокументировано здесь :

The Access Control List (ACL) for the object includes an entry for 
allUsers or allAuthenticatedUsers.

If these conditions are met, the public access column for the object 
reads Public.`

Однако столбец по-прежнему читается Not public.

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

При редактировании разрешений четко указывается, что объект является общедоступным, однако в обзоре не отображается общедоступная ссылка?enter image description here

Мы можем сделать файл общедоступным, установив публичный доступ на уровне Bucket, но нам очень нравится, что он находится на уровне отдельных объектов.Как мы можем заставить это работать?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Это была ошибка, которая была устранена вчера.Спасибо за вопрос!

Ура!

0 голосов
/ 06 декабря 2018

Что сработало для меня, так это добавление allUsers к следующим разрешениям корзины: просмотр объектов хранилища, считыватель устаревших объектов хранения.

Они не позволяют публике перечислять корзину, но читают объекты внутри ведро.

Разрешения на консоли

...