2010-04-06 117 views
3

我得到試圖將文件上傳到S3,當出現以下錯誤:需要有效的日期或x-amz日期標題?

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-StoragesImagekit

我的S3設置在我的settings.py如下所示:

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 

感謝您的幫助!

回答

1

我發現時區差異似乎是一個因素。我是目前在馬來西亞的墨爾本的一名外籍人士。回到我的墨爾本時區,這個錯誤消失了(發生在我使用的所有主要s3訪問工具中,例如s3fox,s3hub等)。

0

我認爲在settings.py中設置'x-amz-date'標題是個壞主意,因爲這個文件每次啓動時只運行一次。

我想你正在使用開發服務器,每當你改變一些.py代碼時它會重新啓動。

無論如何,Django存儲已經有代碼來設置相關的標題,所以你根本不需要那條線。

我還沒有與集科Django的存儲器的頭一個問題,請參閱到位桶這個問題的解決辦法如下: http://code.welldev.org/django-storages/issue/56/aws-authentication-requires-a-valid-date-or-x-amz-date