尝试将文件上传到S3时出现以下错误:
S3StorageError: <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>AWS authentication requires a valid Date or x-amz-date header</Message><RequestId>7910FF83F3FE17E2</RequestId><HostId>EjycXTgSwUkx19YNkpAoY2UDDur/0d5SMvGJUicpN6qCZFa2OuqcpibIR3NJ2WKB</HostId></Error>
我正在使用Django Django-Storages和Imagekit
我的settings.py中的我的S3设置如下所示:
locale.setlocale(locale.LC_TIME, 'en_US')
DEFAULT_FILE_STORAGE = 'backends.s3.S3Storage'
AWS_ACCESS_KEY_ID = '************************'
AWS_SECRET_ACCESS_KEY = '*****************************'
AWS_STORAGE_BUCKET_NAME = 'static.blabla.com'
AWS_HEADERS = {
'x-amz-date': datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT'),
'Expires': 'Thu, 15 Apr 2200 20:00:00 GMT',
}
from S3 import CallingFormat
AWS_CALLING_FORMAT = CallingFormat.SUBDOMAIN
感谢您提供任何帮助!
答案 0 :(得分:1)
我发现时区差异似乎是一个因素。我是来自墨尔本的外籍人士,目前在马来西亚。改回我的墨尔本时区,这个错误消失了(在我使用的所有主要的s3访问工具中都出现了,例如s3fox,s3hub等)。
答案 1 :(得分:0)
我认为在settings.py中设置'x-amz-date'标头是一个坏主意,因为每次启动服务器时此文件只会运行一次。
我猜您使用的是开发服务器,每次更改某些.py代码时都会重新启动。
无论如何,django-storages已经有代码来设置相关的标题,所以你根本不需要那条线。
我还有django-storage设置的标题问题,请在BitBucket上查看此问题以获得修复: http://code.welldev.org/django-storages/issue/56/aws-authentication-requires-a-valid-date-or-x-amz-date