我正在使用AWS启动Django(1.11.x)项目(ElasticBeanstalk,S3,RDS)。使用boto3和django-storages应用程序我管理我的静态文件直接进入S3,直接进入存储桶。但是,S3存储桶还有一些与静态无关的其他文件和目录。出于这个原因,我想在S3桶中创建一个名为static
的文件夹,并将所有静态文件推送到这个专门指定的目录中。
我的settings.py
看起来像这样:
[...]
# Static files (CSS, JavaScript, Images)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_ACCESS_KEY_ID = AWS_S3_MyKEY
AWS_SECRET_ACCESS_KEY = AWS_S3_MySECRET
AWS_STORAGE_BUCKET_NAME = 'elasticbeanstalk-us-west-2-1xxxxxxxxxxx1'
AWS_S3_CUSTOM_DOMAIN = '%s.s3-us-west-2.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_QUERYSTRING_AUTH = False
# general static / media settings
STATIC_URL = '/static/'
STATIC_ROOT = 'staticfiles'
MEDIA_URL = '%smedia/' % STATIC_URL
MEDIA_ROOT = '/static/media/'
ADMIN_MEDIA_PREFIX = '%sadmin' % STATIC_URL
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
# ...
]
[...]
我对Django有一些经验,但这是我的第一个涉及AWS和boto的项目。任何帮助,将不胜感激。提前谢谢。
答案 0 :(得分:1)
我在配置目录中创建custom_storages.py
,如下所示:
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage
class StaticStorage(S3Boto3Storage):
location = settings.STATICFILES_LOCATION
class MediaStorage(S3Boto3Storage):
location = settings.MEDIAFILES_LOCATION
file_overwrite = False
然后在我的设置中:
STATICFILES_STORAGE = 'config.custom_storages.StaticStorage'
DEFAULT_FILE_STORAGE = 'config.custom_storages.MediaStorage'
您应该可以对DEFAULT_FILE_STORAGE
执行相同的操作。祝你好运!
答案 1 :(得分:0)
在您的设置中,
AWS_LOCATION = settings.MEDIAFILES_LOCATION
答案 2 :(得分:0)
您可以使用AWS_LOCATION参考:https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#usage
AWS_STORAGE_BUCKET_NAME = 'mybucket'
AWS_LOCATION = 'mylife/myrules/'