Вопрос или проблема
Я потратил довольно много времени на устранение неполадок. Вот что я подтвердил на данный момент:
Сторона S3
- Имя корзины точно совпадает с именем моего сайта
- Включено статическое размещение, документ индекса задан как index.html (который находится в корзине)
- Блокировать весь публичный доступ: Включено. Это не должно быть проблемой, потому что я использую OAC
- Политика корзины:
{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucketname/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::<что-то>:distribution/<что-то>"
}
}
}
]
}
Распределение cloudfront
- пользовательский SSL-сертификат, TLS 1.2 (https не работает, но это проблема для более позднего решения)
- объект корневого каталога по умолчанию
/index.html
. Неясно, так ли это необходимо, поскольку S3 уже знает, что это объект корневого каталога. - Происхождение: домен источника – это конечная точка S3 WEBSITE, порт 80 http
- Поведения: перенаправлять HTTP на HTTPS
Route 53
3 записи:
- A запись, псевдоним, простая маршрутизация, указывает на мой домен cloudfront
- NS-запись, созданная Aws (я добавил их в список серверов DNS, где я купил свой домен)
- SOA запись, созданная aws
Ответ или решение
Для решения проблемы с получением ошибки 403 от CloudFront при использовании S3 статического хостинга, CloudFront с Origin Access Control (OAC), SSL и Route 53, необходимо тщательно проверить все настройки и конфигурации. Давайте рассмотрим, как можно устранить эту ошибку.
Теория
Когда вы настраиваете S3 для статического хостинга с CloudFront, важно обеспечить правильный доступ к вашему содержимому, соблюдая все необходимые условия для защиты вашего содержимого. Ошибка 403 обычно означает, что доступ к ресурсу запрещен. Возможные причины могут включать неправильные настройки политики доступа к корзине S3, неверные конфигурации CloudFront или ошибки в настройках Route 53.
Пример
Давайте углубимся в вашу ситуацию. Вы указали, что блокировка общего доступа к S3 включена, и это правильно при использовании CloudFront с OAC. Однако давайте проверим основные аспекты настройки:
-
Корзина S3 и ее доступ
Ваш код политики корзины выглядит корректным, но стоит проверить следующее:- Убедитесь, что
<something>
и<wahtever>
вAWS:SourceArn
как минимум правильно заменены на действительные значения ARN вашей CloudFront distribution.
- Убедитесь, что
-
Настройки CloudFront
Обратите внимание, что вы используете S3 веб-сайт как источник. Обычно для OAC рекомендуется использовать S3 API endpoint (например, mybucket.s3.amazonaws.com) вместо веб-сайтного. Это может быть причиной вашей ошибки 403. Обратите особое внимание:- Измените источник на S3 API endpoint.
- Убедитесь, что OAC добавлен в ключ конфигурации в Origin у CloudFront.
-
Route 53 и SSL
Убедитесь, что ваш SSL-сертификат правильно установлен и что CloudFront использует его в качестве Custom SSL Certificate.- Проверьте A-запись в Route 53, убедитесь, что домен правильно указывает на домен CloudFront.
Применение
-
Обновите источник CloudFront на S3 API endpoint и повторно проверьте политику доступа в корзине S3. Если вы используете OAC, убедитесь, что он привязан к вашей CloudFront distribution.
-
Проверьте и обновите SSL-конфигурацию: Убедитесь, что ваш сертификат покрывает нужный домен, и попробуйте устранить проблемы с HTTPS до их появления.
-
Перепроверьте записи DNS в Route 53: Убедитесь, что все записи правильно связаны с вашим CloudFront distribution и что указания DNS-сервера обновлены у вашего регистратора.
Следование этим шагам должно помочь. Проверьте каждую настройку и устраните выявленные несоответствия, чтобы обеспечить успешный доступ через CloudFront к данным из вашей S3 корзины.