2

我收到試圖訪問我的文件一個在S3上如果出現以下錯誤:我們計算出你所提供的簽名不匹配的請求籤名 - AWS

<Error> 
    <Code>SignatureDoesNotMatch</Code> 
    <Message> 
     The request signature we calculated does not match the signature you provided. Check your key and signing method. 
    </Message> 
</Error> 

圖像通常顯示在我的網站,但通過我的API訪問它給了我上面的錯誤。任何想法爲什麼會發生?

S3設置:

AWS_ACCESS_KEY_ID = 'key here' 
AWS_SECRET_ACCESS_KEY = 'key here' 

AWS_STORAGE_BUCKET_NAME = 'bucket name' 
AWS_CLOUDFRONT_DOMAIN = 'something.cloudfront.net' 

STATICFILES_STORAGE = 'oby.s3utils.StaticRootS3BotoStorage' 
STATIC_S3_PATH = 'media/' 
DEFAULT_FILE_STORAGE = 'oby.s3utils.MediaRootS3BotoStorage' 
DEFAULT_S3_PATH = 'static/' 

S3_URL = '//{}.s3.amazonaws.com/'.format(AWS_STORAGE_BUCKET_NAME) 
MEDIA_ROOT = 'this is fine' 
STATIC_ROOT = 'this is fine' 
MEDIA_URL = '//{}/{}'.format(AWS_CLOUDFRONT_DOMAIN, STATIC_S3_PATH) 
STATIC_URL = '//{}/{}'.format(AWS_CLOUDFRONT_DOMAIN, DEFAULT_S3_PATH) 

AWS_PRELOAD_METADATA = False 

預先感謝您的任何和所有幫助!

+1

這是什麼意思「通過我的API訪問它給了我上面的錯誤」?請爲您使用的網址提供示例。如果你枚舉你正在使用的庫,它也會很有幫助。 – matagus

+0

@matagus我爲我的API使用Django Rest Framework。當我說我無法從我的API訪問它時,我的意思是它顯示圖像的S3 url。例如,該網址看起來像:'bucket.s3.amazonaws.com/s3/...'。當我去那個鏈接,我得到錯誤。但是,如果我訪問顯示圖像的網站上的頁面,則會顯示完美。那有意義嗎? – jape

回答

1

可能有多種原因。一個常見的問題是客戶端的系統時間。如果距「真實」時間太遠,則可能發生此錯誤。

+0

有沒有辦法讓它們更接近時間? – jape

+0

使用ntp。查找您的操作系統的命令行並運行一次。然後再次嘗試aws命令 – Barak

相關問題