0

django-storages我遇到了与 AWS Beanstalk 一起的奇怪行为。

我使用 AWS Beanstalk 部署了我的 Django 项目,设置如下

  • 应用程序负载均衡器
  • NginX
  • 亚马逊 Linux2 AMI
  • 码头工人形象
  • Django 在容器入口点使用 Gunicorn 执行

问题描述

  1. 当我在本地启动堆栈时,eb local run ...一切正常。我可以上传图片,它们会出现在 S3 中!对于较大的图像,这需要一些时间,但绝对可以。

  2. 但是,当我使用 部署堆栈时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"

我很感谢任何建议!不幸的是,我在日志中找不到任何有用的东西。

4

0 回答 0