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