Есть ли способ назначить статический IP-адрес для AWS Lambda без VPC? - PullRequest
1 голос
/ 20 июня 2019

Я хочу назначить статический IP-адрес моей лямбде, которая вызывается через шлюз API. Это необходимо, потому что нисходящая система, которую я вызываю с этой лямбды, принимает веб-запросы только с белого списка.

Мне удалось достичь этого через VPC, который я связываю с моей лямбдой. Но VPC вводит плохое время холодного запуска, которое иногда составляет 12-16 секунд. Поэтому я ищу способ предотвратить этот холодный запуск с VPC, но в то же время назначить статический IP-адрес лямбде.

Ответы [ 3 ]

3 голосов
/ 20 июня 2019

Нельзя назначить общедоступный / статический IP-адрес для любой лямбда-функции.

Единственным хорошим вариантом является развертывание в VPC с интернет-шлюзом и настройка маршрутизации из подсети Lambda через NAT, который имеет Elastic IP. Тогда ваш целевой хост может внести в белый список Elastic IP.

Также см .:

2 голосов
/ 20 июня 2019

Вам понадобится:

  • Создание VPC с интернет-шлюзом, общедоступной подсетью и частной подсетью
  • Присоединение лямбда-функции AWS к частной подсети
  • Запустите NAT Gateway в общедоступной подсети и обновите таблицу маршрутов частной подсети для использования шлюза NAT

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

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

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

Я согласен с ответом Джона за наличие статической части белого списка IP. Однако это не решит проблему холодного запуска, потому что лямбда, если она идеальна, на самом деле требует небольшого времени для запуска. Поэтому я бы порекомендовал вам также создать событие Cloudwatch для периодического обращения к лямбде, чтобы решить эту проблему, или написать простой код (либо в лямбда-выражении, либо где-то еще), который периодически отправляет пустой запрос, чтобы решить проблему холодного запуска. Вы можете просмотреть улучшение в X-Ray. Это накладные расходы, но один раз.

...