Функция AWS Lambda в VPC с интернет-шлюзом все еще не может получить доступ к Интернету - PullRequest
1 голос
/ 14 июня 2019

У меня есть лямбда-функция, которая просто выполняет от http.get до http://www.google.com. Если у меня нет функции за VPC, она работает нормально. Беда случается, когда я кладу его в свой VPC.

Я знаю, что вам нужно настроить Интернет-шлюз. Я сделал это. Две мои подсети привязаны к таблицам маршрутов, которые направляют 0.0.0.0/0 к этому интернет-шлюзу. Разве это не все, что мне нужно?

Функция по-прежнему зависает независимо от ассоциации интернет-шлюза. Группы безопасности подсети разрешают весь трафик из 0.0.0.0/0".

Согласно Предоставить доступ в Интернет к лямбда-функции VPC , это все, что мне нужно сделать.

Edit:

Добавление полного списка компонентов VPC для ясности.

  • Создан новый VPC (vpc-09 *)
  • Создана новая подсеть (подсеть-05 *), указывающая на мою новую:
  • таблица маршрутов, (rtb-0b). Я вижу подсеть-05 * под Ассоциациями подсетей. В разделе Маршруты я вижу пункт назначения 0.0.0.0/0, связанный с целью
  • новый шлюз NAT (nat-08 *). Этот шлюз NAT имеет эластичный IP-адрес и частный IP-адрес. Он находится в правильной подсети. Статус Доступен.
  • Кроме того, я создал новую группу безопасности для функции Lambda. Содержит одно правило для исходящих запросов «Весь трафик» с пунктом назначения 0.0.0.0/0

Насколько я могу судить, по этой ссылке на документацию AWS я сделал абсолютно все, чтобы обеспечить Lambda доступ к Интернету. Тем не менее, он все еще зависает при попытке сделать запрос к внешнему интернету.

1 Ответ

4 голосов
/ 14 июня 2019

Ты почти у цели. Ссылка, которую вы указали, решает вашу проблему напрямую:

Если вашей функции также требуется доступ к Интернету (например, для достижения общедоступной конечной точки службы AWS), ваша функция должна использовать шлюз NAT или экземпляр

Вам не хватает этого:

Ваш VPC должен содержать шлюз или экземпляр NAT в общедоступной подсети.

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

Точно такая же ссылка , которую вы предоставили, инструктирует вас о том, как создать этот NAT-шлюз вместе с вашими VPC и Lambdas.

Дополнение ответа - на , почему вам нужен NAT Gateway в этом сценарии, - из-за:

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

Извлечено из aws docs


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

...