Django с облачным хранилищем Google

Я пытался реализовать облачное хранилище google (загрузка медиафайлов) для моего django приложения на google app engine с помощью пакета django-storages. Я следовал всем спецификациям, приведенным в пакете. Я также установил соответствующие политики и роли для учетной записи службы для доступа к хранилищу, но я продолжаю получать ошибку "anonymous caller does not have storage.objects.get access to the google cloud storage object." при попытке просмотреть изображения в моем html шаблоне.

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

Вот скриншот моей конфигурации для django-storages в файле settings.py enter image description here

  1. Пожалуйста, проверьте правильность ваших учетных данных. Если вы используете gsutil, проверьте, что учетные данные, сохраненные в вашем файле .boto являются точными. Также убедитесь, что gsutil использует файл .boto. используя команду gsutil version -l и проверив запись config path(s) entry.

  2. И если вы используете правильные учетные данные, направляются ли ваши запросы направляются через прокси, используя HTTP (вместо HTTPS)? Если да, проверьте, настроен ли ваш прокси-сервер на удаление заголовка Authorization из таких запросов. Если да, убедитесь, что вы используете HTTPS вместо HTTP для своих запросов.

    Вы можете обратиться к Документу по аутентификации хранилища

    .

Я перепроверил свои настройки и конфигурации политики bucket и они все верны. Я понял, что установив политику bucket на не публичный доступ и доступ через учетную запись пользовательского сервиса, я не смог отобразить файл в html (через теги iframe), используя исходный url "https://storage.cloud.google.com/{}/'.format(GS_BUCKET_NAME)". Однако в ответ я получал объект файла. Я прочитал содержимое файла и закодировал его в base64, затем отобразил файлы/изображения на html-странице, и это работает. Возможно, если политика bucket не установлена на public, исходный url не предназначен для прямого доступа или в данном случае только через авторизованную учетную запись сервиса.

Вернуться на верх