Почему S3 (при использовании с хранилищами boto и django) дает подписанный URL-адрес даже для общедоступных файлов?

Это странно. У меня есть как общедоступные, так и частные файлы. Мне нужны обычные URL-адреса в общедоступных файлах и подписанные URL-адреса в частных файлах.

Я пытался изменить AWS_QUERYSTRING_AUTH to False, как я вижу по умолчанию, это True в django-storages.

Но когда я меняю его, URL-адрес моих личных файлов не подписан (поэтому недоступен).

Может быть, я что-то упускаю здесь. Что может быть решением?

Заранее спасибо.


person chhantyal    schedule 27.05.2013    source источник


Ответы (3)


AWS_QUERYSTRING_AUTH устанавливает поведение по умолчанию, но вы можете переопределить его при создании экземпляра S3BotoStorage, передав дополнительный аргумент инициализатору:

S3BotoStorage(bucket="foo", querystring_auth=False)

Таким образом, если у вас есть одна корзина частная, а другая общедоступная, вы можете соответствующим образом установить аргумент querystring_auth и получить желаемое поведение.

person user2433326    schedule 29.05.2013
comment
Спасибо, но у меня одно ведро с разными директориями. - person chhantyal; 30.05.2013
comment
все еще нет проблем. два отдельных экземпляра сделают это `S3BotoStorage(bucket=foo, location=bar, querystring_auth=False)`` Ваше разделение частного/общего является медиа/статическим, вы можете просто установить разные экземпляры в качестве серверных. - person Denis Cornehl; 04.06.2013

положи это в свой settings.py

AWS_QUERYSTRING_AUTH = False
person Algorithmatic    schedule 07.11.2014
comment
Установка AWS_QUERYSTRING_AUTH на False сработала для меня и выглядит довольно прямолинейно в коде (github.com/jschneier/django-storages/blob/1.5.0/storages/) для Python 2 и 3. Я запускаю следующие версии: boto==2.42. 0 джанго-хранилищ == 1.5.1 - person Aleck Landgraf; 11.10.2016

Другой способ обойти это — установить 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)

person pawciobiel    schedule 29.10.2015