Статический хостинг S3, CloudFront с OAC, SSL и Route53: Возвращает 403 CloudFront Некорректный запрос.

Вопрос или проблема

Я потратил довольно много времени на устранение неполадок. Вот что я подтвердил на данный момент:

Сторона 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 записи:

  1. A запись, псевдоним, простая маршрутизация, указывает на мой домен cloudfront
  2. NS-запись, созданная Aws (я добавил их в список серверов DNS, где я купил свой домен)
  3. SOA запись, созданная aws

Ответ или решение

Для решения проблемы с получением ошибки 403 от CloudFront при использовании S3 статического хостинга, CloudFront с Origin Access Control (OAC), SSL и Route 53, необходимо тщательно проверить все настройки и конфигурации. Давайте рассмотрим, как можно устранить эту ошибку.

Теория

Когда вы настраиваете S3 для статического хостинга с CloudFront, важно обеспечить правильный доступ к вашему содержимому, соблюдая все необходимые условия для защиты вашего содержимого. Ошибка 403 обычно означает, что доступ к ресурсу запрещен. Возможные причины могут включать неправильные настройки политики доступа к корзине S3, неверные конфигурации CloudFront или ошибки в настройках Route 53.

Пример

Давайте углубимся в вашу ситуацию. Вы указали, что блокировка общего доступа к S3 включена, и это правильно при использовании CloudFront с OAC. Однако давайте проверим основные аспекты настройки:

  1. Корзина S3 и ее доступ
    Ваш код политики корзины выглядит корректным, но стоит проверить следующее:

    • Убедитесь, что <something> и <wahtever> в AWS:SourceArn как минимум правильно заменены на действительные значения ARN вашей CloudFront distribution.
  2. Настройки CloudFront
    Обратите внимание, что вы используете S3 веб-сайт как источник. Обычно для OAC рекомендуется использовать S3 API endpoint (например, mybucket.s3.amazonaws.com) вместо веб-сайтного. Это может быть причиной вашей ошибки 403. Обратите особое внимание:

    • Измените источник на S3 API endpoint.
    • Убедитесь, что OAC добавлен в ключ конфигурации в Origin у CloudFront.
  3. Route 53 и SSL
    Убедитесь, что ваш SSL-сертификат правильно установлен и что CloudFront использует его в качестве Custom SSL Certificate.

    • Проверьте A-запись в Route 53, убедитесь, что домен правильно указывает на домен CloudFront.

Применение

  1. Обновите источник CloudFront на S3 API endpoint и повторно проверьте политику доступа в корзине S3. Если вы используете OAC, убедитесь, что он привязан к вашей CloudFront distribution.

  2. Проверьте и обновите SSL-конфигурацию: Убедитесь, что ваш сертификат покрывает нужный домен, и попробуйте устранить проблемы с HTTPS до их появления.

  3. Перепроверьте записи DNS в Route 53: Убедитесь, что все записи правильно связаны с вашим CloudFront distribution и что указания DNS-сервера обновлены у вашего регистратора.

Следование этим шагам должно помочь. Проверьте каждую настройку и устраните выявленные несоответствия, чтобы обеспечить успешный доступ через CloudFront к данным из вашей S3 корзины.

Оцените материал
Добавить комментарий

Капча загружается...