Использование CloudFront для обслуживания статического содержимого/файлов, хранящихся в S3, не работает

Я пытаюсь настроить CloudFront и S3 для обслуживания статического содержимого моего веб-сайта. Короче не работает.

Сначала я создал корзину S3, отключив весь публичный доступ.

Затем я создал дистрибутив CloudFront, выбрав свой S3 в качестве исходного домена.

Интересно то, что консоль AWS продолжает показывать мне предупреждение о том, что я должен сам обновить политику корзины после создания дистрибутива (для OAC). Но он не обновляет ведро автоматически.

Итак, после того, как я создал дистрибутив, я обновил политику корзины следующим образом.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipalReadWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::men-mvc-local/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::xxxx-9609-xxxx:distribution/E1L6NWB7YV5XXX"
                }
            }
        }

Затем я попытался получить доступ к файлу в корзине, используя облачный URL-адрес, вставив следующий URL-адрес в браузер.

https://dl2j5zcr9xpi4.cloudfront.net/my-image.png

Я все еще не вижу изображения.

Что не так с моей конфигурацией и как я могу это исправить?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я просто просматриваю тот же прогресс, что и ваш, и на самом деле вижу изображение, которое я помещаю в корзину через URL-адрес распространения.

Ниже то, что я скопировал из консоли CloudFront, я обнаружил одно различие между вашим и моим, т. е. версию политики. С уважением, мне просто интересно, почему версия политики предлагаемого заявления о политике от AWS устарела.

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::<S3 Bucket Name>/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::<12-digits Account ID>:distribution/EC709QQQLE5VZ"
                }
            }
        }
    ]
}

Из вашего общего доступа к структуре политики вам необходимо изменить идентификатор учетной записи AWS в ARN вашего дистрибутива на непрерывную 12-значную строку. У вас есть 2 неожиданных дефиса в части идентификатора вашей учетной записи AWS в ARN раздачи.

# Before
xxxx-9609-xxxx
# After
123496095678

Привет, спасибо за ответ. Я попытался изменить версию, а также включить опцию хостинга статического веб-сайта в корзине. Это все еще не работает. Да, идентификатор моей учетной записи состоит из 12 цифр, включая дефис. Похоже на это 5320-5333-4852

Wai Yan Hein 12.04.2023 21:15

Кроме того, я не пытаюсь использовать ведро в качестве статического веб-сайта.

Wai Yan Hein 12.04.2023 21:32

Проблема в дефисе. Уберите дефисы. Идентификатор учетной записи состоит из 12 непрерывных цифр. И убедитесь, что статический веб-хостинг ОТКЛЮЧЕН.

Scott Hsieh 13.04.2023 01:25

Уууууу. Сейчас это работает. Спасибо.

Wai Yan Hein 13.04.2023 02:07

Если бы вы могли обновить свой ответ, я проголосую и приму его.

Wai Yan Hein 13.04.2023 02:07

@WaiYanHein рад слышать, что вы решили проблему. Я обновил, поместив основную причину и соответствующее решение в конце. :D

Scott Hsieh 13.04.2023 02:46

Другие вопросы по теме