2012-10-15 66 views
1

我試圖將所有Django媒體文件(從管理面板上傳)上傳到Amazon S3。因此,設置文件看起來像這樣:Django媒體上傳到AS3

INSTALLED_APPS = (
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'tastypie', 
'core', 
'advertisment', 
'storages', 

) 

    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
    AWS_ACCESS_KEY_ID = 'xxx' 
    AWS_SECRET_ACCESS_KEY = 'xxx' 
    AWS_STORAGE_BUCKET_NAME = 'media' 
    MEDIA_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME 

,當我嘗試從管理面板上傳文件,我得到以下錯誤:

S3ResponseError: 403 Forbidden 

我檢查this答案,但仍然沒幫助

回答

2

您是否安裝了boto,因爲django-storage對boto有依賴性?

然後,你將需要添加以下到您的settings.py

import os 

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') 
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') 
AWS_STORAGE_BUCKET_NAME = os.environ.get('S3_BUCKET_NAME') 

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 

STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/' 
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' 

那麼你的緩存會被存儲在AWS S3本身。

我希望它能幫助

注:出於安全原因,它是一個好主意,你的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY添加爲環境變量,而不是僅僅直接寫下來的setting.py。

+0

是的,我確實安裝了Boto,並且仍然存在相同的問題。花了幾個小時試圖弄清楚,我認爲這個問題是博託試圖獲得存儲鑰匙的時候。請在原始文章中查看我的編輯。 –

+0

我剛剛使用了這個設置。我確認它是爲django 1.6工作的。非常感謝! – user2673206