Як зробити багато файлів загальнодоступними в Google Cloud Storage?


81

У мене є 1000 файлів у Google Cloud Storage, щоб зробити їх загальнодоступними, або взагалі ієрархію каталогів.

У веб-інтерфейсі я, здається, лише публікую один за одним.

Чи є якийсь спосіб зробити це.


1
Я знайшов це. Ви можете запустити: gsutil ls, щоб отримати список файлів. Потім ви можете перенести список у xargs за допомогою gsutil setacl public-read *. Ви також можете зробити gsutil setdefacl відкритим для читання, щоб надалі завантажені файли були загальнодоступними
engineerchuan

Відповіді:


106

Біжи gsutil -m acl set -R -a public-read gs://bucket

  • -mВидає кілька запитів одночасно.
  • Ці -Rпитання запрошувати для кожного об'єкта в вашому відрі.
  • Ці -aпитання просить для кожної версії кожного об'єкта.

Докладніше див gsutil help acl.

На рівні API gsutil видає такий запит HTTP:

PUT /bucket/obj?acl HTTP/1.1
Host: storage.googleapis.com
x-goog-acl: public-read

Ви можете переконатися в цьому, використовуючи -Dпрапор із gsutil:

gsutil -D setacl public-read gs://bucket/obj

Дякую за це! На даний момент документ відображає 'gsutil acl set public-read gs: // bucket / object'. Це синтаксис оновлення з 'setacl' на 'acl set'? ( developers.google.com/storage/docs/gsutil/commands/acl#set )
П’єр Бруч

Список попередньо визначених ACL (приватний, загальнодоступний тощо): cloud.google.com/storage/docs/access-control
ruhong

Я спробував тактику acl і оновлені файли щойно повернулися до не спільних :(
Darian311

58

Під час запуску: gsutil -m acl set -R -a public-read gs://bucketви визначаєте загальнодоступне читання для всіх об’єктів, які зараз перебувають у вашому сегменті, але при завантаженні нових файлів вони не будуть загальнодоступними за замовчуванням.

Я виявив, що варто визначити аккаунт за замовчуванням у відрі як загальнодоступний gsutil defacl set public-read gs://bucket


2
Гарна ідея. На жаль, це працює лише на сегменті верхнього рівня, і його не можна використовувати в папці в сегменті. Інша відповідь працює навіть у папці.
Plasty Grove

6
gsutil defacl set public-read gs://bucketпрацює з усіма майбутніми файлами, включаючи файли в підкаталогах. Ігноруйте коментар Plastly Grove.
Альбін

51

Ви можете зробити всі об’єкти у відрі загальнодоступними. Ось посилання .

  1. Відкрийте браузер Cloud Storage у консолі Google Cloud Platform.
  2. У списку сегментів натисніть на назву сегмента, який ви хочете опублікувати.
  3. Виберіть вкладку "Дозволи" вгорі сторінки.
  4. Натисніть кнопку Додати учасників.
    З'явиться діалогове вікно Додати учасників.
  5. У полі Учасники введіть усіх Користувачів.
  6. У спадному меню Ролі виберіть підменю Зберігання та натисніть опцію Переглядач об’єкта зберігання.
  7. Натисніть Додати.

Після спільного доступу для кожного об’єкта у стовпці «Загальний доступ»> з’являється піктограма посилання. Ви можете натиснути на цю піктограму, щоб отримати URL-адресу об’єкта.


1
Хлопці, це схоже на відповідь. Я щойно перевірив свої дозволи на сегмент. Я змінив своє зображення та перезавантажив, і Google Storage не зіпсував дозволи, як це було до того, як я запустив цю команду: gsutil iam ch allUsers: objectViewer gs: // [BUCKET_NAME]. Про всяк випадок, якщо вам цікаво, що Amazon все ще лідирує у спрощенні подібних речей. Вау, занадто багато кривої навчання, щоб робити те саме на GS.
Darian311

1
Це повинні бути правильні відповіді, оскільки використання gsutil може мати ненавмисні наслідки, якщо ви не знаєте, що робите.
Перніфер

13

Найпростіший спосіб зробити це - за допомогою консолі.

Натисніть "Змінити дозволи на сегмент"

введіть тут опис зображення

Введіть allUsersу розділі Додати учасників Тоді Select Role> Storage>Storage Object Viewer

Увага! Це дасть дозвіл на читання всім користувачам Інтернету для всіх об’єктів у вибраному сегменті.

введіть тут опис зображення


1
Дякуємо, що надали скріншот, це дуже корисно.
GusDeCooL

12

Поточна (жовтень / 2017) документація про розміщення статичного веб-сайту, що знаходиться тут, вказує на:

gsutil acl ch -r -u AllUsers:R gs://bucket-name

Де -rробить рекурсивний фокус і -u AllUsers:Rнадає загальнодоступний доступ для читання


2
Це також працює для підкаталогів, наприкладgsutil acl ch -r -u AllUsers:R gs://bucket-name/dir-name
Ville

1
Якщо в цьому каталозі багато файлів, тоді додавання a -mзробить це після -gsutil -m acl ch -r -u AllUsers:R gs://bucket-name/dir-name
MikeHoss

1

Щоб скопіювати та вставити від імені Еріка, це послідовно працювало для мене:

Зробити групи об’єктів загальнодоступними для читання

Щоб зробити всі об’єкти у відрі загальнодоступними для читання:

CONSOLEGSUTILREST APIS Використовуйте команду gsutil iam ch, замінюючи [VALUES_IN_BRACKETS] на відповідні значення:

 gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.