Обслуживание статических файлов из облачного хранилища Google?

Я хотел использовать статические файлы, хранящиеся в облачном хранилище Google, для приложения, размещенного в приложении. В HTML файле я использовал

<link href="#" onclick="location.href='https://storage.cloud.google.com/my_bucket/custom.css'; return false;" rel="stylesheet">

Он работает правильно, если учетная запись google зарегистрированного пользователя имеет разрешение на доступ к ведру. Поскольку приложение может быть доступно всем, у кого не будет доступа к моему ведру, и в таком случае статические файлы не будут обслуживаться.

Можно ли сделать статические файлы в ведре общедоступными? Я сделал статический файл (custom.css) как "общедоступный" (ACL установлен на "public-read" ), но другие пользователи не могут получить к нему доступ.

Ответ 1

Я не уверен, как вы загружаете свои файлы и почему публичное чтение настроено неправильно, но вы также можете изменить это с помощью Google Cloud Storage Менеджер. Просто найдите ведро и файл и нажмите галочку Share Publicly, и вы получите ссылку.

list of files in the bucket on cloud storage

Или вы можете загрузить этот файл с помощью gsutil с открытым правом:

gsutil cp -a public-read custom.css gs://my_backet

Ответ 2

Помимо ручного изменения каждого из статических файлов через Google Cloud Storage Manager, вы также можете настроить общедоступный просмотр вашего сегмента с помощью gsutil:

Используйте acl для установки публичного чтения на текущих объектах корзины

gsutil -m acl set -R -a public-read gs://BUCKET_NAME

Используйте defacl для установки по умолчанию для будущих загрузок:

gsutil -m defacl set public-read gs://BUCKET_NAME

Флажок "общий доступ" будет автоматически проверяться для всех загружаемых файлов.

Чтобы получить доступ к корзине, убедитесь, что вы ввели авторизованный идентификатор или адрес электронной почты для групп и пользователей и домен для разрешения корзины, в противном случае вы получите сообщение об ошибке, например:

'DefAclCommand' object has no attribute 'continue_on_error'