Я перенес веб-сайт на AWS с Angular на одном сервере, Nodejs / Express на другом сервере и с использованием базы данных PostgreSQL в RDB. Это прекрасно работает и в настоящее время работает, но не очень хорошо для масштабируемости и доступности.
Поэтому я переместил Angular для обслуживания из корзины S3, доступной через CloudFront, и обновил его с помощью WebHook в моем репозитории GitHub. Кажется, все это прекрасно работает.
У меня есть Nodejs / Express с использованием Elasti c Beanstalk и еще раз с использованием WebHook, он обновляется из репозитория GitHub. У меня еще есть пара вещей, которые нужно отработать в развертывании с этим, но я думаю, что они будут незначительными (что означает, что они укусят меня позже).
То, что я не могу понять, это способ разрешить Angular делать вызовы API для балансировщика нагрузки в Elasti c Beanstalk.
Я все еще использую proxy.config. json? Если так, на что я могу указать? Я попытался создать запись CNAME в Route 53 для api.myapp.com, указывающую на значение DNS балансировщика нагрузки. Это не сработало.
Использую ли я AWS API Gateway. Здесь я пробовал разные вещи, но я не смог заставить их работать. Единственное, что казалось возможным, потребовало бы от меня определения каждого из API, который, если это вообще возможно, был бы моим последним средством.
Это что-то, что не может быть сделано?
Я прочитал много статей с похожими вопросами, но ни одна из них не подходила достаточно близко, чтобы дать мне ответ. Возможно я просто смотрю на неправильно. Любая помощь будет принята с благодарностью.
Отредактировано
После погони за многими белками за последние пару дней, я думаю, что она сузилась до проблемы конфигурации с CloudFront.
- У меня есть маршрут в маршруте 53, который указывает на мой CloudFront как "dev.mydomain.com", и он прекрасно работает.
- У меня есть маршрут в маршруте 53, который указывает на my Elasti c Beanstalk Load Balancer как "api.mydomain.com".
- Я могу позвонить, введя URL-адрес в браузере, например "https://api.mydomain.com/api/getInfo", и он возвращает информацию вместе с заголовками cors. Когда у меня приложение выполняет тот же вызов, который обслуживается из корзины S3 CloudFront, я получаю «Доступ к XMLHttpRequest по адресу« https://api.mydomain.com/api/getInfo »из источника» https://dev.mydomain.com ' была заблокирована политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». " и, конечно же, в заголовке ответа нет ни одного заголовка cors.
Я нашел пару статей, которые, кажется, имеют дело с этим, но они не сработали (или я неправильно их реализую). Я пытался создать происхождение, я пытался создать поведение. Пока ничего не получалось.
Я с этим уже сталкивался или знает статью, которая помогла бы, я был бы очень признателен.