我正在 AWS(ElasticBeanstalk、S3、RDS)上启动 Django (1.11.x) 项目。使用 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 的第一个项目。任何帮助,将不胜感激。提前谢谢你。
请您参考如下方法:
我在我的配置目录中创建了一个 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 执行相同的操作。祝你好运!
