2016-07-19 45 views
1

我想找到一種方法將我的Django靜態文件上傳到Amazon S3存儲桶。將Django靜態文件上傳到Amazon S3

在我settings.py我:

AWS_STORAGE_BUCKET_NAME = 'XXXXX' 
AWS_ACCESS_KEY_ID = 'AXXXXXA' 
AWS_SECRET_ACCESS_KEY = 'DXXXXXXXXX6' 
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME 
STATICFILES_LOCATION = 'static' 
STATICFILES_STORAGE = 'custom_storages.StaticStorage' 
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION) 

上傳我的Django代碼到AWS EB實例作爲使用EB控制面板上傳功能的zip文件。

確保我的靜態文件(在靜態/目錄中)被複制到S3存儲桶的建議方法是什麼?

+0

https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/ –

+0

是的我試過了儘管如此,但這並沒有做到。 –

回答

0

我會嘗試做這樣的設置:

settings.py:

STATICFILES_DIRS = (
    os.path.join('path', 'to_your', 'files'), 
) 
AWS_ACCESS_KEY_ID = 'AXXXXXA' 
AWS_SECRET_ACCESS_KEY = 'DXXXXXXXXX6' 
AWS_STORAGE_BUCKET_NAME = 'XXXXX' 
STATICFILES_STORAGE = 'proj.s3utils.StaticRootS3BotoStorage' # static files 
STATIC_S3_PATH = 'media/' 
DEFAULT_FILE_STORAGE = 'proj.s3utils.MediaRootS3BotoStorage' # media uploads 
DEFAULT_S3_PATH = 'static/' 
S3_URL = '//{}.s3.amazonaws.com/'.format(AWS_STORAGE_BUCKET_NAME) 
MEDIA_URL = S3_URL + STATIC_S3_PATH 
STATIC_URL = S3_URL + DEFAULT_S3_PATH 
MEDIA_ROOT = '/home/ubuntu/domain.com/proj/static/media' # assuming this is your layout 
STATIC_ROOT = '/home/ubuntu/domain.com/proj/static/static' # assuming this is your layout 
AWS_PRELOAD_METADATA = True 
AWS_S3_SECURE_URLS = True 
date_three_months_later = datetime.date.today() + datetime.timedelta(3 * 365/12) 
expires = date_three_months_later.strftime('%A, %d %B %Y 20:00:00 EST') 
AWS_HEADERS = { 
    'Expires': expires, 
    'Cache-Control': 'max-age=31536000', # 365 days 
} 

s3utils.py: 確保安裝django-storagesboto

from storages.backends.s3boto import S3BotoStorage 

StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') 
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media') 

這應該確保一切都進入您的S3存儲桶。