Несколько экземпляров API Gateway, одна лямбда-функция - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь создать систему, в которой несколько шлюзов API экземпляров должны выполнять одну и ту же лямбда-функцию .

Моя проблема в том, что я хотел бы изменить только лямбда-конфигурацию в зависимости от используемого шлюза API.

Давайте возьмем в качестве примера имя базы данных, которая должна измениться, если лямбда-сигнал запускается из одного API или другого.

Пример: * 1 013 ** ** 1014 1015 * API Gateways: https://my-first-api-gateway.execute-api.eu-west-1.amazonaws.com https://my-second-api-gateway.execute-api.eu-west-1.amazonaws.com Затем у меня есть одна лямбда-функция, вызываемая двумя API: say_hello.

Эта функция должна получить цитату из базы данных. Если функция была вызвана из my-first-api-gateway, лямбда-функция должна использовать my_first_database, а если функция была вызвана из my-second-api-gateway, она должна использовать my_second_database.

Единственное решение, с которым я пришел, - это развернуть столько лямбда-функций, сколько у меня есть шлюзов API. А затем используйте переменные среды для хранения имени моей базы данных.

Мне не нравится мое решение, потому что, когда я обновляю одну строку кода, мне придется заново развертывать все мои лямбда-функции .. (если у меня есть 300 различных баз данных, которые будут использоваться, это будет означать, что я обновлю 300 лямбда-функций сразу ..)

Спасибо за ваши идеи на эту тему!

1 Ответ

0 голосов
/ 08 ноября 2018

Если вы используете интеграцию Lambda-Proxy, все будет в порядке.

Полная информация о событии может быть найдена здесь , однако критически важные заголовки Host, origin и Referer указывают на адрес API-шлюза:

"headers": {
  "Host": "j3ap25j034.execute-api.eu-west-2.amazonaws.com",
  "origin": "https://j3ap25j034.execute-api.eu-west-2.amazonaws.com",
  "Referer": "https://j3ap25j034.execute-api.eu-west-2.amazonaws.com/dev/"
}

Следовательно, для вас должно быть довольно тривиально ветвиться / искать поведение вашей базы данных по этой информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...