使用django-storages和s3boto后端:附加x-amz-security-token,我不想要

时间:2013-02-12 15:45:28

标签: django amazon-s3 boto

我正在使用django-storage从s3提供静态内容。这在使用boto 2.5.X时工作正常。但是当我使用boto> = 2.6时,s3媒体的网址会被破坏;附加一个额外的变量。不同之处在于附加了x-amz-security-token(我不想要)。网址无法访问媒体。

在我的settings.py中,我使用

AWS_QUERYSTRING_AUTH = False

糟糕的网址:

https://mybucket.s3.amazonaws.com/static/style/css/layout.min.css?x-amz-security-token=AQoDYXdzEKj/76aRNkwEaoALUm866M8Z6Kc4aF/76aRNkjDcT70xSVB58kR%2BONYLf7y1z1pgqUX7fPRXVQjP9DYOZzcVdHCV27zybD/iPYT2C6rCEnvkQvhcq....

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

基于django-storages(版本1.1.8)

我有更好的解决方法
 AWS_S3_CUSTOM_DOMAIN = 'mybucket.s3.amazonaws.com'

这避免了django-storage调用boto的generate_url,并且只是将资源的路径拼接在一起。如果你想使用auth来获取静态文件,这将无效。

对于好奇:

我网站的某些部分的静态文件工作,其他部分,如管理员,不起作用。这与

之间的区别有关
{% load static %}

{% load staticfiles %}

两者都定义了一个块标记{% static %},但它们做了不同的事情。来自static的那个只是{{STATIC_URL}},来自staticfiles的那个使用存储的url方法来获取文件的url。来自{% static %}的django管理员admin_static块与staticfiles块一样,使用存储。

通过更改为使用{% load staticfiles %}我的网站在AWS_QUERYSTRING_AUTH = False和/或AWS_S3_SECURE_URLS = False处随处可见。这指出问题基本上是boto generate_url,当querystring_authFalse时,x-amz-security-token仍然设置。

答案 1 :(得分:0)

尝试在settings.py中添加此内容

  

AWS_S3_SECURE_URLS = False