django-storages
我遇到了与 AWS Beanstalk 一起的奇怪行为。
我使用 AWS Beanstalk 部署了我的 Django 项目,设置如下
- 应用程序负载均衡器
- NginX
- 亚马逊 Linux2 AMI
- 码头工人形象
- Django 在容器入口点使用 Gunicorn 执行
问题描述
当我在本地启动堆栈时,
eb local run ...
一切正常。我可以上传图片,它们会出现在 S3 中!对于较大的图像,这需要一些时间,但绝对可以。但是,当我使用 部署堆栈时
eb deploy
,图像不再上传。POST
请求后GET
立即触发请求(即使对于大图像)并且不上传任何图像。
django-storages 我的 PROD 设置的一部分
# # # #
# Offload MEDIA & STATIC to S3
# # # #
DEFAULT_FILE_STORAGE = 'custom_storages.MediaStorage'
THUMBNAIL_DEFAULT_STORAGE = 'custom_storages.MediaStorage'
STATICFILES_STORAGE = 'custom_storages.StaticStorage'
INSTALLED_APPS += ("storages",)
AWS_ACCESS_KEY_ID = os.getenv('STATIC_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('STATIC_SECRET_KEY')
AWS_STATIC_BUCKET_NAME = os.getenv('STATIC_BUCKET_NAME')
AWS_MEDIA_BUCKET_NAME = os.getenv('MEDIA_BUCKET_NAME')
AWS_S3_ENDPOINT_URL = os.getenv('STATIC_ENDPOINT_URL')
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'static'
AWS_DEFAULT_ACL = 'public-read'
STATIC_URL = '{}/{}/'.format(AWS_S3_ENDPOINT_URL, AWS_LOCATION)
媒体存储
class MediaStorage(S3Boto3Storage):
bucket_name = settings.AWS_MEDIA_BUCKET_NAME
custom_domain = '{}.s3.amazonaws.com'.format(bucket_name)
location = "media"
我很感谢任何建议!不幸的是,我在日志中找不到任何有用的东西。