2013-05-27 3 views
11

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

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

Но, когда я меняю его, мой личный файл url не подписан (таким образом, он недоступен).

Возможно, у меня что-то отсутствует. Что может быть решением?

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

ответ

19

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

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

Так что если у вас есть один ковш личное и другое ведро public, вы можете правильно установить аргумент querystring_auth и получить желаемое поведение.

+1

Спасибо, но у меня одного ведра с различными директорий. – chhantyal

+4

все еще без проблем. два отдельные экземпляры будут делать это 'S3BotoStorage (ведро =«Foo», расположение =«бар», querystring_auth = False)' ' Вашего отделения частной/общественности СМИ/статические, вы можете просто установить различные экземпляры, как движки. –

3

это в вашем settings.py

AWS_QUERYSTRING_AUTH = False 
+0

Настройка 'AWS_QUERYSTRING_AUTH' на' False' работала для меня и выглядела довольно проницательно в коде (https://github.com/jschneier/django-storages/blob/1.5.0/storages/backends/s3boto.py#L214) для обоих python 2 и 3. Я запускаю эти версии: boto == 2.42.0 django-storages == 1.5.1 –

Смежные вопросы