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, но он почему-то не работает
Любая ваша помощь будет принята с благодарностью, спасибо за ваше время.
попробуйте изменить регион вашей страны
- В настройках вашего ведра снимите галочку с блокировки публичного доступа
- Сгенерируйте разрешения
{
"Id": "Policy1631681912120",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1631681911100",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::you_bucket_name/*",
"Principal": "*"
}
]
}
- 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'