Почему S3 (использование с boto и django-storage) дает подписанный url даже для общедоступных файлов?
Это странно. У меня есть как публичные, так и частные файлы. Я хочу обычные URL-адреса в общедоступных файлах и подписанные URL-адреса в частных файлах.
Я попытался изменить AWS_QUERYSTRING_AUTH to False
, как я вижу по умолчанию, он True в django-хранилищах.
Но, когда я его меняю, мой личный файл url не подписан (таким образом, недоступен).
Может быть, я что-то пропустил. Что может быть решением?
Спасибо заранее.
Ответы
Ответ 1
AWS_QUERYSTRING_AUTH
задает поведение по умолчанию, но вы можете переопределить его при создании экземпляра S3BotoStorage
, передав дополнительный аргумент инициализатору:
S3BotoStorage(bucket="foo", querystring_auth=False)
Итак, если у вас есть один ведро private и другое сообщество, вы можете соответствующим образом установить аргумент querystring_auth
и получить желаемое поведение.
Ответ 2
поместите это в свой settings.py
AWS_QUERYSTRING_AUTH = False
Ответ 3
Другой способ обойти это - установить AWS_S3_CUSTOM_DOMAIN в ваших настройках.
@see: https://github.com/jschneier/django-storages/blob/master/storages/backends/s3boto.py#L478
(проверено с помощью boto == 2.38.0 и django-storages-redux == 1.3)