S3主机/查询字符串身份验证因额外参数而中断

Ran*_* Ma 4 django amazon-s3

我有一个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
Run Code Online (Sandbox Code Playgroud)

然后我使用模板标记在模板中引用静态文件,如下所示:

<script src="{% static 'js/jquery.payment.js' %}"></script>
Run Code Online (Sandbox Code Playgroud)

这个正确呈现在浏览器中,但URL对他们来说,其他3个参数Signature,Expires和AWSAccessKeyId.后两者对文件没有任何影响,但使用呈现的Signature值访问文件会导致InvalidAccessKeyId错误,并显示消息"您提供的AWS访问密钥ID在我们的记录中不存在".

手动删除Signature参数让我可以正常访问该文件.拿走所有三个参数都很好.取消后两个参数中的任何一个都会导致错误:"查询字符串身份验证需要Signature,Expires和AWSAccessKeyId参数".

亚马逊的S3文档显示,查询字符串身份验证用于允许您访问通常需要身份验证的文件,并且该Expires参数不像我认为的那样与缓存相关.由于看起来这些文件不需要任何身份验证(即我可以在没有URL参数时访问它们),我需要帮助:

  1. 使staticfiles/boto不强制我的网址上的这些参数
  2. 使staticfiles /博托获得一个有效的Signature值

Ran*_* Ma 9

设置AWS_QUERYSTRING_AUTH = False.