Получите URL-адрес AWS Lambda из cdk и вставьте его во внешнее приложение

#amazon-web-services #amazon-s3 #aws-api-gateway #aws-cdk

Вопрос:

У меня есть стек aws cdk, который я пишу на машинописном языке. Он состоит из приложения react, хранящегося в корзине s3 (через развертывание корзины s3). У меня также есть шлюз api, на котором работает api websocket. Теперь мне нужно объединить их вместе, сообщив приложению react URL-адрес шлюза api, в идеале на этапе развертывания.

Я попытался записать токен в файл перед развертыванием, но строка все еще маркирована, поэтому я заканчиваю wss://${Token[TOKEN.243]}... тем , что пишу слишком рано. Я попытался записать файл через cdk deploy -O , но в этот момент уже слишком поздно отправлять его вместе с развертыванием.

Как я могу сообщить своему приложению react URL-адрес веб-api?

Комментарии:

1. Почему у вас нет фиксированного входа в маршрут 53, чтобы вашему приложению react не нужно было меняться каждый раз при изменении бэкенда? Затем вы можете просто обновить запись в маршруте 53, чтобы она указывала на вывод конечной точки шлюза api

2. Я все еще довольно новичок в ландшафте AWS — не знал об этом. Я прочту его, судя по звукам, это то, что нам нужно. Спасибо.

Ответ №1:

Когда я выполню этот шаблон, я буду использовать CloudFront для прокси-сервера /api/* к своему шлюзу API, а все остальное-к URL-адресу веб-сайта корзины S3. Тогда код реакции просто должен делать запросы по /api

Комментарии:

1. Я должен был добавить деталь, что это api websocket. Я попробовал это сделать, и, похоже, у меня возникли проблемы с задержкой и повторением сообщений websocket.

Ответ №2:

Вы можете разделить свой стек на 2 части.

  1. Стек Api
  2. Стек РеактАпп

Api Stack Сначала разверните с -O возможностью записи URL-адреса api в какой-либо файл json в каталоге, который будет развернут в s3.

Теперь у вас есть json с URL-адресом api в файле json, и вы можете развернуть ReactApp Stack его прямо сейчас.

Примечание: В вашем приложении react вы можете прочитать URL-адрес из файла, который будет сгенерирован cdk deploy -O <filename>.json .