Проблема с AWS CloudFront и рендерингом на стороне сервера (Nuxt) - PullRequest
0 голосов
/ 12 июля 2020

У меня проблема с 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 отклоняет этот запрос.

...