AWS VPC с доступом в Интернет, иногда тайм-ауты с внешними запросами

#amazon-web-services #aws-lambda #amazon-vpc

#amazon-web-services #aws-lambda #amazon-vpc

Вопрос:

Я создал VPC (из-за потребностей в подключении к RDS внутри лямбд) в AWS, который большую часть времени имеет доступ в Интернет, но иногда мои внешние запросы истекают (в основном это происходит с SES, поскольку они составляют большинство внешних запросов). запросы). Я настроил свой VPC следующим образом (извините, не в созданном порядке, просто считываю их с AWS):

  1. VPC с 172.30.0.0 /16 CIDR
  2. 3 частные подсети с 172.30.0.0/24, 172.30.1.0/24, 172.30.2.0/24 и разные зоны доступности для каждого (1a, 1b, 1c) с маршрутом 0.0.0.0 / 0, нацеленным на мой NAT
  3. 1 общедоступная подсеть с зоной доступности от 172.30.3.0 / 24 до 1a с маршрутом 0.0.0.0 / 0, предназначенным для моего IGW
  4. 2 таблицы маршрутов (частная и общедоступная) с 3 частными подсетями в частной таблице маршрутов и общедоступной в собственной
  5. Группы безопасности для лямбд, перенаправляющих весь исходящий трафик на 0.0.0.0 / 0
  6. Лямбда-выражения настроены для использования этих подсетей и заданной группы безопасности.

Я не понимаю, почему мои интернет-запросы несколько раз терпят неудачу внутри VPC, это почти так, как если бы лямбда-выражение запускалось в некоторой зоне доступности, и у этого конкретного нет доступа к Интернету внутри vpc.

РЕДАКТИРОВАТЬ: решено! У меня была общедоступная подсеть, указанная в моей лямбда-функции, которая вызывала тайм-ауты

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

1. Настроена ли ваша лямбда-функция на использование нескольких подсетей? Если да, являются ли они сочетанием общедоступных и частных подсетей? Есть ли конкретная причина, по которой вы настроили функцию Lambda для подключения к VPC (например, нужно ли ей взаимодействовать с ресурсами в VPC)?

2. У Lambda в VPC нет доступа в Интернет. Вы уверены, что правильно установили NAT и разместили lambda только в частных подсетях с таблицами маршрутизации в NAT?

3. @JohnRotenstein лямбды также подключаются к RDS, вот почему нужен VPC. И лямбда-коды настроены на использование нескольких подсетей (те 4, которые я перечислил, естественно. Добавит это к исходной публикации

4. Лямбда в общедоступной подсети, не имеет подключения к Интернету. Только два из них в частных подсетях будут иметь подключение к Интернету. Общедоступный не будет, что может объяснить, почему он иногда терпит неудачу.

5. Да, это решило проблему. Большое спасибо за помощь!

Ответ №1:

Функции AWS Lambda, подключенные к VPC, всегда должны быть настроены на использование частных подсетей.

Если для этих лямбда-функций также требуется доступ в Интернет, они могут использовать шлюз NAT или экземпляр NAT для доступа к Интернету. Эти службы NAT должны быть настроены на использование общедоступных подсетей.

Когда функция Lambda подключена к частной подсети, трафик, предназначенный для Интернета, будет перенаправляться из частной подсети через шлюз NAT / экземпляр NAT и выводиться в Интернет. Это не сработает, если функция Lambda подключена к общедоступной подсети. (И функция Lambda не может напрямую подключаться с VPC к Интернету.)

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

1. Привет, это мне очень помогает. На самом деле я думал, что лямбда-функции могут быть подключены к одной из общедоступных подсетей, и иногда это не выходило за пределы Интернета. Большое спасибо.