Url изображения из S3 не работает в шаблоне Django

Мой django back-end и веб-сайт размещены в heroku. Мои медиафайлы размещены на Amazon S3. У меня нет проблем с загрузкой изображений на S3. Но когда я пытаюсь вставить url изображения из S3 в тег img, у меня возникает проблема. Изображение не отображается.

<img src="{{ taxi.user_photo.url }}" alt="Photo of user">

вот url, который возвращается: https://elasticbeanstalk-us-west-2-865036748267.s3.amazonaws.com/media/user_photo/default_taksist.png?AWSAccessKeyId=AKIA4S2BVIXV43WWVZG4&Signature=En2f5F65B61oaYexN2HIIcWIgME%3D&Expires=1631531071

В этой ссылке есть KeyId и Signature, я понятия не имею, почему это так.

А вот политика моего ведра S3:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "PublicReadGetObject",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::elasticbeanstalk-us-west-2-865036748267/*"
    }
]

}

Я проверил другие ответы в stackoverflow, они не очень помогли.

Суть в том, что у меня есть url, но он почему-то не работает

Любая ваша помощь будет принята с благодарностью, спасибо за ваше время.

попробуйте изменить регион вашей страны

  1. В настройках вашего ведра снимите галочку с блокировки публичного доступа
  2. Сгенерируйте разрешения

{
  "Id": "Policy1631681912120",
  "Version": "2012-10-17",
  "Statement": [
{
  "Sid": "Stmt1631681911100",
  "Action": [
    "s3:GetObject"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:s3:::you_bucket_name/*",
  "Principal": "*"
}
]
}
  1. settings.py

AWS_S3_ACCESS_KEY_ID = 'secret_key'
AWS_SECRET_ACCESS_KEY  = 'secret_access_key'
AWS_S3_SIGNATURE_VERSION = "s3v4"
AWS_S3_REGION_NAME = "your_bucket_region"
AWS_STORAGE_BUCKET_NAME = 'your_bucket_name'

AWS_QUERYSTRING_AUTH = False # it will clear the authentication info from the url

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

django-storage-documentation

Вернуться на верх