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 было общедоступным, т. е. до того, как я включил опцию Блокировать весь публичный доступ.
Возможно ли это:
- Сохраняйте мое ведро S3 частным, обслуживая медиа файлы только через Cloudfront, и
- Настроить разрешения ведра так, чтобы новые файлы, загруженные из Django, не блокировались
AccessDenied
.