Как настроить CloudFront для создания пользовательской страницы ошибок для каждого источника

Я пытаюсь развернуть Angular Application на AWS, используя S3 и Cloudfront. Наше приложение Angular взаимодействует с приложением Spring, которое служит нашим внутренним приложением и находится в экземпляре EC2. Я уже настроил наш CloudFront для перенаправления /api запросы к нашему бэкэнду и все остальное к фронтэнду. Прямо сейчас я настроил пользовательский ответ об ошибке Cloudfront для 403 и 404, чтобы он возвращал наш angular index.html. Проблема заключается в том, что когда наш интерфейс пытается отправить и API вызвать наш сервер и возвращает 404 с правильным ответом json вместо получения json. Мы получаем файл index.html.

Я пытаюсь добиться того, чтобы, если пользователь заходит на http://somedomain.com/invalid-path, ему предоставляется index.html, но если он пытается вызвать API, http://somedomian.com/api/v1/invalid-path они должны получить то, что возвращает внутренний сервер.

1 ответ

Решение

Вы можете создать лямбда-функцию ассоциации типа события Origin response изменить код состояния и содержание тела. Вы хотите добавить это в CloudFront behaviors используется для вашего интерфейса приложения. Вот пример.

Вы можете добавить 302 заголовок и перенаправить в местоположение (поведение кэша) для страницы статической ошибки, или вы можете прикрепить контент к response.body и измените код состояния на 200.

Больше на Lambda@Edge

У меня была такая же проблема, как было решено следующим образом:

  • Настройте сегмент S3 на "Статический хостинг веб-сайтов" и установите index.html как "Документ об ошибке".
  • Измените источник CloudFront на "Custom Origin", указывающий на конечную точку статического веб-сайта S3, а не на "S3 Origin", указывающий непосредственно на корзину S3.
  • Затем конфигурацию "Страницы ошибок" можно удалить из распространения CloudFront.
Другие вопросы по тегам