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

chh*_*yal 13 python django amazon-s3 boto django-storage

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

我试图在AWS_QUERYSTRING_AUTH to False默认情况下改变,在django-storage中它是真的.

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

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

提前致谢.

小智 21

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

S3BotoStorage(bucket="foo", querystring_auth=False)
Run Code Online (Sandbox Code Playgroud)

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

  • 还是没问题.两个单独的实例将执行它`S3BotoStorage(bucket ="foo",location ="bar",querystring_auth = False)``您的私有/公共分离是媒体/静态,您可以将不同的实例设置为后端. (4认同)

Alg*_*tic 5

把这个放在你的settings.py

AWS_QUERYSTRING_AUTH = False
Run Code Online (Sandbox Code Playgroud)