我有一个Django项目设置,S3作为静态文件主机。
settings.py
AWS_STORAGE_BUCKET_NAME = 'project-1'
conn = boto.connect_s3()
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
S3_URL = 'http://project-1.s3.amazonaws.com/'
STATIC_URL = S3_URL
然后我使用模板标签在我的模板中引用静态文件,如下所示:
<script src="{% static 'js/jquery.payment.js' %}"></script>
这在浏览器中正确呈现,但网址上有3个其他参数,Signature
,Expires
和AWSAccessKeyId
。后两者对文件没有任何影响,但使用呈现的Signature
值访问文件会导致InvalidAccessKeyId错误,并显示消息“您提供的AWS访问密钥ID在我们的记录中不存在”。
手动删除Signature
参数可以让我正确访问该文件。拿走所有三个参数都很好。取消后两个参数中的任何一个都会导致错误:“查询字符串身份验证需要Signature,Expires和AWSAccessKeyId参数”。
Amazon's S3 documentation显示查询字符串身份验证用于允许您访问通常需要身份验证的文件,并且Expires
参数不像我认为的那样与缓存相关。由于看起来这些文件不需要任何身份验证(即我可以在没有URL参数时访问它们),我需要帮助:
Signature
值答案 0 :(得分:9)
设置AWS_QUERYSTRING_AUTH = False
。