AccessDenied для файлов, загруженных из Django в частное ведро S3 с помощью Cloudfront

Я ноб в AWS, создающий сайт для хобби с использованием Django и Wagtail CMS. Я следовал этому руководству по подключению ведра S3 с django-storages. Затем я добавил Cloudfront к моему ведру, и все работает, как ожидалось: Я могу загружать изображения из Wagtail в мое ведро S3 и могу видеть, что они обслуживаются через Cloudfront.

Однако в руководстве, которому я следовал, было отключено Block all public access на этом ведре, что, как я читал, является плохой практикой безопасности. По этой причине я хотел бы настроить Cloudfront так, чтобы мое ведро было частным, и мои медиафайлы Django были доступны только через Cloudfront, а не через S3. Я попробовал снова включить Block all public access и добавить эту политику ведра:

            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXXXX"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-s3-bucket/*"

Проблема, с которой я столкнулся, заключается в том, что, когда у меня включен Block all public access, я получаю AccessDenied сообщения о любых новых изображениях, которые я загружаю из Wagtail в S3. Я знаю, что новые изображения загружаются и хранятся в моем ведре, поскольку я могу видеть их при просмотре объектов в моей учетной записи. Но я могу просматривать только те изображения, которые я загрузил, когда мое ведро S3 было общедоступным, т. е. до того, как я включил опцию Блокировать весь публичный доступ.

Возможно ли это:

  1. Сохраняйте мое ведро S3 частным, обслуживая медиа файлы только через Cloudfront, и
  2. Настроить разрешения ведра так, чтобы новые файлы, загруженные из Django, не блокировались AccessDenied
  3. .
Вернуться на верх