2016-11-22 52 views
0

雖然我的文件上傳工作正常,但我無法讓他們使用AWS S3進行生產。目前我得到的403錯誤:Django媒體存儲與亞馬遜403錯誤

S3ResponseError: 403 Forbidden 

我可以看到在我的AWS IAM用戶訪問密鑰ID,我得到當Django應用程序試圖連接記錄最後的訪問。

但是當我測試的憑據:

>>> import boto 
>>> s3 = boto.connect_s3('access_key', 'secret_key') 
>>> bucket = s3.get_bucket('mybucket') 

然後我也得到一個403禁止訪問錯誤,但是由於某些原因,最後的訪問記錄沒有出現在AWS IAM dahboard,這使我認爲測試不起作用的原因?


common.py設置:

MEDIA_ROOT = str(APPS_DIR('media')) 
MEDIA_URL = '/media/' 

生產設置:

AWS_ACCESS_KEY_ID = env('DJANGO_AWS_ACCESS_KEY_ID') 
AWS_SECRET_ACCESS_KEY = env('DJANGO_AWS_SECRET_ACCESS_KEY') 
AWS_STORAGE_BUCKET_NAME = env('DJANGO_AWS_STORAGE_BUCKET_NAME') 
AWS_AUTO_CREATE_BUCKET = True 

from storages.backends.s3boto import S3BotoStorage 
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media') 
DEFAULT_FILE_STORAGE = 'config.settings.production.MediaRootS3BotoStorage' 

MEDIA_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME 

AWS環境vairables在Heroku的設置。

通過上傳完成:

class Bill(models.Model): 
    service = models.ForeignKey(UserService 
    bill = models.FileField(upload_to='bills', validators=[validate_file_extension]) 
+0

聽起來像一個權限問題。檢查您的IAM權限和S3存儲桶策略。 –

+0

請注意,除了Users-> Security Credentials外,如何檢查IAM權限 - 訪問密鑰和密鑰inthere是我用來測試的。存儲區權限看起來不錯列表,Uplod/Delete,查看權限和編輯權限已授予用戶(我),這是我使用的訪問密鑰和密鑰。 – Yunti

回答

0

date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date

運行此命令一次,如果簽名是無效的,那麼AWS將拋出403 我有同樣的問題早。