Альтернатива шлюзу AWS Lambda + NAT - PullRequest
4 голосов
/ 05 июня 2019

Быстрое знакомство с моим сценарием: у меня есть VPC, который содержит API-шлюз, который перенаправляет его вызовы на мои функции Lambda, а затем они получают доступ как к экземпляру RDS, так и к внешним вызовам API (доступ в Интернет).

Как этоструктурированный

В связи с тем, что функциям необходим доступ к RDS, я поместил и RDS, и Lambdas в один и тот же VPC, что обеспечивает надлежащую защиту RDS без публичного доступа.Теперь, поскольку Lambdas находятся в VPC, им нужен NAT-шлюз для доступа в Интернет (почти все эти функции должны вызывать API сторонних производителей), и вот тут я сталкиваюсь с огромной проблемой.

Проблема

У меня небольшой проект для обслуживания нескольких пользователей (от 10 до 200 пользователей), и с созданной мной установкой без сервера я ожидаю, что затраты составят от 3,00 $до $ 10,00 каждый месяц .Это стоимость без a одного NAT Gateway.Теперь, и если мы добавим цену шлюза, которая составляет $ 0,045 в час - и я даже не принимаю во внимание 0,045 $ за ГБ передаваемых данных - это > 30 долларов в месяц .Было бы глупо с моей стороны не создавать другой, поддерживающий Multi-AZ, и минимизировать возможный сбой зоны доступности - поэтому > $ 60,00 для 2 шлюзов NAT .

Это не только нецелесообразно для меня, но разве это не лишит законной силы всю структуру без сервера, которая обычно следует подходу по требованию?

Как решить эту проблему?

Одна из моих альтернатив - вывести Lambdas из VPC (что означает отсутствие VPC) и получить доступ к RDS через какой-то механизм, не делая его общедоступным - и вот где я также терплю неудачу, как можно безопасно получить доступRDS в сценарии, где функции Lambdas находятся за пределами VPC RDS?

В худшем случае - я знаю, что плохо выставлять мой RDS публике - но насколько уязвима его уязвимость?

Имейте в виду, что я не виню цены AWS, я сосредоточен исключительно на поиске альтернативы NAT Gateway One - я ценю предложения по решению этого вопроса.Кроме того, извините, если я сделал совершенно неправильное предположение, я новичок в экосистеме AWS.

1 Ответ

1 голос
/ 05 июня 2019

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

Лямбда

  • Поскольку ваши лямбды должны общаться с интернетом, а также с вашим VPC, они должны жить в VPC.
  • Lambdas также нельзя развернуть в подсети pubc, поэтому они должны находиться в частной подсети
  • Поскольку им нужно общаться с Интернетом, вашей частной подсети нужен NAT

К счастью, использование управляемых AWS шлюзов NAT - не единственный вариант подключения NAT к вашей частной подсети, вы также можете запустить собственный экземпляр NAT.

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html

Хотя это больше не рекомендуется (шлюзы NAT управляются, поэтому предпочтительнее), AWS по-прежнему предлагает экземпляры AMI экземпляра NAT, которые можно использовать для выполнения той же работы. Вы должны иметь возможность запустить экземпляр t2.nano NAT в каждой из ваших частных подсетей (в разных AZ, чтобы получить HA) примерно за 5 долларов США.

Это сэкономит вам 50 долларов в месяц и будет означать, что вы можете использовать экземпляр RDS в частной подсети, и вам не нужно будет обнародовать его. Единственный недостаток - теперь вы должны сами управлять своими экземплярами NAT (исправлениями и т. Д.).

...