【发布时间】:2015-07-11 12:49:45
【问题描述】:
我已成功将我的应用设置为使用 S3 存储所有静态和媒体文件。但是,我想上传到 S3(当前操作),但从我设置的云端实例提供服务。我已尝试将设置调整为 cloudfront url,但它不起作用。请问如何上传到 S3 并从 Cloudfront 提供服务?
设置
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
DEFAULT_FILE_STORAGE = 'app.custom_storages.MediaStorage'
STATICFILES_STORAGE = 'app.custom_storages.StaticStorage'
STATICFILES_LOCATION = 'static'
MEDIAFILES_LOCATION = 'media'
STATIC_URL = "https://s3-eu-west-1.amazonaws.com/app/%s/" % (STATICFILES_LOCATION)
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION)
custom_storages.py
from django.conf import settings
from storages.backends.s3boto import S3BotoStorage
class StaticStorage(S3BotoStorage):
location = settings.STATICFILES_LOCATION
class MediaStorage(S3BotoStorage):
location = settings.MEDIAFILES_LOCATION
【问题讨论】:
-
您是否有其他信息为什么它不起作用?有任何错误信息吗?
-
如果它对任何人有帮助,我还必须为
collectstatic添加设置AWS_DEFAULT_ACL = ''才能工作,而不是返回 403。