У меня проблема с AWS рендерингом на стороне сервера CloudFront и Nuxt
Это компоненты моего приложения:
- Java бэкэнд, работающий на EC2
- Интерфейс Nuxt (Vue), выполняется рендеринг на стороне сервера на API Gateway + Lambda + S3 (с Serverless Framework)
В качестве точки входа в приложение у меня есть дистрибутив CloudFront который разделяет внутренние запросы (/ api / *) на экземпляр EC2 и запросы внешнего интерфейса (по умолчанию) к конечной точке шлюза API, поэтому интерфейс является серверной стороной, отображаемой Lambda.
Код внешнего интерфейса выполняет HTTP запрос к бэкэнду для получения данных с использованием URL-адреса publi c CloudFront (поскольку рендеринг является гибридным, первый раз выполняется на стороне сервера, но если пользователь переходит обратно на домашнюю страницу, он отображается на стороне клиента).
Итак, это поток вызова:
Browser => CloudFront (путь к интерфейсу) => API Gateway => Lambda (приложение для рендеринга) => CloudFront (backen d path) => EC2
Лямбда-функция получает ошибку 403 ('x-cache': ['Error from cloudfront']) при вызове CloudFront без дополнительных сведений.
Но если я просматриваю интерфейс в API Gateway напрямую (в обход CloudFront), все работает:
Браузер => API Gateway => Lambda (приложение для рендеринга) => CloudFront (backend path) => EC2
Я не понимаю, почему вызов функции Lambda через CloudFront влияет на его способность выполнять HTTP-запрос на URL CloudFront или, другими словами, почему CloudFront отклоняет этот запрос.