Python 为什么S3(与boto和django存储一起使用)甚至为公共文件提供签名url?
这很奇怪。我有公共文件和私人文件。我想要公共文件中的普通URL,私人文件中的签名URL 我尝试将Python 为什么S3(与boto和django存储一起使用)甚至为公共文件提供签名url?,python,django,amazon-s3,boto,django-storage,Python,Django,Amazon S3,Boto,Django Storage,这很奇怪。我有公共文件和私人文件。我想要公共文件中的普通URL,私人文件中的签名URL 我尝试将AWS\u QUERYSTRING\u AUTH更改为False,默认情况下,在django存储中是这样的 但是,当我更改它时,我的私有文件url没有签名(因此无法访问) 可能是我错过了什么。什么是解决方案 提前感谢。AWS\u QUERYSTRING\u AUTH设置默认行为,但您可以在创建s3Botostrage的实例时通过向初始值设定项传递附加参数来覆盖它: S3BotoStorage(buck
AWS\u QUERYSTRING\u AUTH更改为False
,默认情况下,在django存储中是这样的
但是,当我更改它时,我的私有文件url没有签名(因此无法访问)
可能是我错过了什么。什么是解决方案
提前感谢。
AWS\u QUERYSTRING\u AUTH
设置默认行为,但您可以在创建s3Botostrage
的实例时通过向初始值设定项传递附加参数来覆盖它:
S3BotoStorage(bucket="foo", querystring_auth=False)
因此,如果您有一个bucket private和另一个bucket public,您可以适当地设置
querystring\u auth
参数,并获得所需的行为。将其放入设置中。py
AWS_QUERYSTRING_AUTH = False
另一种解决方法是在设置中设置AWS_S3_自定义_域。 @见:
(使用boto==2.38.0和django storages redux==1.3进行测试)谢谢,但我有一个具有不同目录的存储桶。仍然没有问题。两个独立的实例可以做到这一点,`s3botostrage(bucket=“foo”,location=“bar”,querystring\u auth=False)``您的私有/公共分离是媒体/静态的,您可以将不同的实例设置为后端。将
AWS\u querystring\u auth
设置为False
对我来说很有效,并且在代码中看起来很难()对于Python2和Python3。我正在运行这些版本:boto==2.42.0 django存储==1.5.1