为什么S3(使用boto和django-storage)为公共文件提供签名URL?

时间:2013-05-27 17:25:16

标签: python django amazon-s3 boto django-storage

这很奇怪。我有公共文件和私人文件的混合。我想在公共文件中使用普通网址,在私人文件中使用签名网址。

我在默认情况下尝试更改AWS_QUERYSTRING_AUTH to False,在django-storage中它是真的。

但是,当我更改它时,我的私人文件网址没有签名(因此无法访问)。

可能是我在这里遗漏了一些东西。什么可以解决?

提前致谢。

3 个答案:

答案 0 :(得分:20)

AWS_QUERYSTRING_AUTH设置默认行为,但您可以在创建S3BotoStorage实例时通过向初始化程序传入一个额外的参数来覆盖它:

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

因此,如果您有一个私有存储桶和另一个存储桶,则可以适当地设置querystring_auth参数并获得所需的行为。

答案 1 :(得分:3)

将此内容放入settings.py

AWS_QUERYSTRING_AUTH = False

答案 2 :(得分:1)

解决此问题的另一种方法是在您的设置中设置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进行测试)