首页 > 解决方案 > Heroku + S3 AWS + Django != 没有图像

问题描述

我试图将我的应用程序放到网上,但似乎没有显示图像文件。也许你能帮忙?我在 S3 AWS 的存储桶中需要图像,但仍然没有出现。虽然当我尝试在网页上打开图像时,我被发送到亚马逊网站。我收到了这条信息:

InvalidRequest 不支持您提供的授权机制。请使用 AWS4-HMAC-SHA256。8CF0C70490DEFEE2 dtBKlPBbw5L6pM6mGyd4YaqC4amay/c2tccfhhStjujVGG2qdrvQwD6vGloJZWQle9A5Cwr3Rws=

Here is my settings.py

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_TMP = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

os.makedirs(STATIC_TMP, exist_ok=True)

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

AWS_ACCESS_KEY_ID = "####"
AWS_SECRET_ACCESS_KEY="####"
AWS_STORAGE_BUCKET_NAME="####"

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

django_heroku.settings(locals())

标签: djangoherokuamazon-s3

解决方案


您的 MEDIA_URL 不正确。

尝试这样的事情(我假设你希望你使用静态资源和媒体):

AWS_AUTO_CREATE_BUCKET = True
AWS_STORAGE_BUCKET_NAME = "my_bucket"

DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"

STATIC_LOCATION = "resources/"
MEDIA_LOCATION = "media/"

AWS_BUCKET_ACL = "public-read"
AWS_QUERYSTRING_AUTH = False
AWS_S3_REGION_NAME = "your-bucket-region"

AWS_S3_CUSTOM_DOMAIN = f"{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com"


STATIC_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/{STATIC_LOCATION}"
MEDIA_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/{MEDIA_LOCATION}/"

推荐阅读