Мои изображения s3 не будут отображаться на моем сайте django

#django #amazon-web-services #amazon-s3

#django #amazon-web-services #amazon-s3

Вопрос:

Мое веб-приложение использует django и s3. Когда я попытался получить доступ к моим изображениям s3 на AWS через общедоступную корзину. Все остальное работает, за исключением простого безопасного хранилища (s3). У меня эта ошибка:

 <Error>
<style class="darkreader darkreader--safari-fallback">...</style>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>DAD37CB20E79C307</RequestId>
<HostId>
tuZqmK2Ei6dvMify2V2LoGmJxJ33UemNknXnH2DM4YzfqS3MNuvmLJJVq5SmUTr5976TkWpeHpc=
</HostId>
</Error>
 

https://framann-quilting-place.s3.us-east-2.amazonaws.com/media/products/carousel/SewingKit.jpg

Ответ №1:

необходимо сделать две вещи:

  1. в корзине должен быть включен статический хостинг веб-сайтов
  • Откройте консоль Amazon S3 по адресу https://console.aws.amazon.com/s3 /.
  • Выберите имя корзины, которую вы настроили как статический веб-сайт.
  • Выберите разрешения.
  • В разделе Заблокировать общедоступный доступ (настройки корзины) выберите Редактировать.
  • Снимите флажок Блокировать весь общедоступный доступ и выберите Сохранить изменения.
  1. Политика корзины должна быть настроена на это:
 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::framann-quilting-place/*"
            ]
        }
    ]
}
 

Более подробное объяснение здесь: https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html

Ответ №2:

Похоже, это ведро не является общедоступным. Вам нужно сделать его общедоступным или убедиться, что у вас есть надлежащие разрешения (роль), прежде чем вызывать его.