我正在尝试将所有Django媒体文件(从管理面板上传)上传到Amazon S3。所以设置文件看起来像这样:
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回答,但仍然没有帮助
答案 0 :(得分: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中将其写下来。
答案 1 :(得分:0)
首先,您需要在您的settings.py中设置您放置媒体文件的媒体网址。本文将帮助您在aws https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/
中设置媒体文件