Хранилища Django: Нужен аутентифицированный способ чтения статических файлов из облачного хранилища google
Я пытаюсь читать статические файлы из хранилища GCP, используя ключ учетной записи службы. Проблема в том, что в то время как большинство запросов аутентифицированы django-storages, некоторые запросы являются публичными.
Консоль разработчика: Вкладка Networks
И из-за этого я получаю сломанный Django admin UI.
Сломанный пользовательский интерфейс администратора Django
Вот мои настройки статического файла в settings.py
file.
STATIC_URL = "/static/"
if DEPLOYED_URL:
DEFAULT_FILE_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
STATICFILES_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
GS_BUCKET_NAME = env("GS_BUCKET_NAME")
GS_CREDENTIALS = service_account.Credentials.from_service_account_info(
json.loads(get_secret(PROJECT_NAME, "service_account_json"))
)
GS_DEFAULT_ACL = "projectPrivate"
Мои ограничения заключаются в том, что у меня есть Fine-grained: Object-level ACLs enabled
ведро, к которому нельзя предоставлять публичный доступ.
PS: Поскольку есть ограничения на проект, я не могу использовать публичный bucket. Альтернативные способы, кроме использования пакета django-storages
, также приветствуются. Единственное условие - чтение должно быть аутентифицированным и не публичным.
На момент написания статьи это, по-видимому, открытый баг, связанный с django-storages, но на AWS. Но при дальнейшем рассмотрении аналогичная вещь происходит и на GCP.
Я уже развернул свое приложение с помощью whitenoise для преодоления этой ошибки и разместил свое приложение на GCP cloud run.