Есть ли способ запросить RDS DB в VPC из Lambda вне VPC без NAT - PullRequest
0 голосов
/ 06 октября 2018

Я некоторое время искал хорошие идеи для дизайна, но пока не нашел лучшего варианта.В основном я занимаюсь разработкой бессерверного API для существующей базы данных (RDS MySQL внутри VPC, частная группа безопасности).Поэтому я хочу сделать запрос к базе данных из нескольких функций Lambda.Я знаю о следующих способах достижения этого:

  1. Поместите все лямбды в один и тот же VPC.Но этот случай не очень хорош из-за медленного холодного запуска Lambdas (мне нужно будет держать их в тепле) и ограничений параллелизма.Плюс мне нужно будет вызвать другие сервисы (S3, SES, сторонние сервисы) => настройка будет намного сложнее.Поэтому в идеале держать их за пределами VPC.
  2. Поместить одну лямбду (которая будет запрашивать только БД) внутри того же VPC и вызывать ее из других лямбд за пределами VPC с помощью частного API-шлюза.Лямбда внутри VPC всегда будет теплой, но кажется узким местом из-за большого количества одновременных запросов к этой лямбде.Я знаю, что можно создать несколько групп безопасности и запросить больше IP-адресов, но необходимо будет постоянно отслеживать ситуацию, что недопустимо.
  3. Открытие RDS для доступа из Интернета не является решением.
  4. Aurora также требует VPC ...

Есть идеи или советы?

Спасибо!

1 Ответ

0 голосов
/ 09 октября 2018

Отвечая на вопрос в вашем заголовке, нет, это невозможно.

Из вашего описания вы хотите вызвать лямбды, которые могут получить доступ к ресурсам внутри и за пределами вашего VPC.Ваши первые два варианта в значительной степени описывают ваши единственные варианты здесь.

Что касается вашего варианта 1. Вы можете поместить лямбды внутри VPC и иметь NAT, чтобы вернуться в Интернет.Я предполагаю, что это то, что вы имели в виду под «конфигурацией будет намного сложнее».Но по крайней мере ничто из вашего VPC не может инициировать соединение с чем-то внутри VPC.Я не верю, что добавление NAT-шлюза (см. https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) «намного сложнее», но я думаю, что это субъективно.

В отношении вашего варианта 2. Вы можете иметь неVPC Lambda, вызывать Lambda внутри VPC напрямую (обратное не будет работать). Поэтому нет необходимости в дополнительном компоненте в виде шлюза API (частного или другого). Лямбды внутри VPC будут масштабироваться автоматически, но ограниченыпо количеству доступных IP-адресов в подсети, которую вы указываете. Таким образом, потребуется некоторое планирование емкости.

NB - для каждого варианта потребуется по меньшей мере одна лямбда в VPC.из этих лямбд будет небольшая задержка для настройки ENI (эластичного сетевого интерфейса).

...