Статический IP для исходящих вызовов API - PullRequest
0 голосов
/ 08 февраля 2019

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

Этот вопрос уже задавался здесь, но мне интересно, есть ли в 2019 году какой-либо проще / проще / дешевле решение.

Наша установка

  • Elastic Beanstalk, которая в настоящее время масштабируется до 5 - 50 экземпляров ec2 длянаше веб-приложение, основанное на трафике
  • Балансировщик нагрузки приложения
  • Также имеет рабочий уровень, который будет доступен для использования, если это будет полезно
  • Обычно эти вызовы API будутисходить из любого из наших экземпляров веб-уровня ec2, так как вызовы будут основаны на взаимодействии с пользователем.Конечно, мы можем настроить что-то другое, например, сделать так, чтобы рабочий уровень совершал звонки

Решения, которые я нашел

  • Giveкаждый экземпляр ec2 - это эластичный (статический) IP-адрес.Это не очень хорошее решение для нас, потому что, как мы надеемся, продолжаем масштабировать, количество необходимых IP-адресов будет продолжать расти { ref }

  • Настройка двухЭкземпляры NAT (одного недостаточно, поскольку это будет единственная точка отказа).Я надеюсь, что есть что-то проще и дешевле, чем этот вариант.{ ref } { ref }

  • Создайте новые экземпляры ec2 и поместите их за сетевым балансировщиком нагрузки.Опять сложно и дорого.{ ref }

Существуют ли новые, более простые и менее дорогостоящие решения?Я никогда не использовал AWS Lambda раньше;может быть, можно запустить все функции лямбды с одного IP-адреса?У меня не так много идей, кроме этого на данный момент.Спасибо за ваше время.

1 Ответ

0 голосов
/ 09 февраля 2019

NAT является лучшим решением и не должен стоить вам намного дороже, чем веб-сервер.

Самый простой способ использования NAT - это NAT Gateway .Цена зависит от региона, но составляет около 0,05 доллара в час, что немного больше, чем цена экземпляра t3.medium EC2.Вы также взимаете плату за данные в ГБ, которая может быстро накапливаться.Положительным моментом является то, что Amazon управляет инфраструктурой для вас, включая исправления и высокую доступность.

A NAT Instance - это экземпляр EC2, на котором выполняется специально настроенный AMI.Вы, вероятно, могли бы избежать запуска этого на t3.micro экземпляре, по $ 0,01 в час, что, вероятно, намного меньше, чем на любом из ваших веб-серверов.Вы будете нести ответственность за применение исправлений и пробуждение в середине ночи, если что-то пойдет не так.

Вероятно, вы можете избежать неприятностей с одним NAT любого типа.Сделав это, вы заплатите за кросс-AZ трафик ($ 0,01 / ГБ), поэтому экономия будет ложной, если вы перемещаете много данных через NAT.Это вопрос о том, будете ли вы получать более высокую доступность от двух NAT, потому что в таблицах маршрутизации вы можете ссылаться только на один за раз.Поэтому, если один из них выйдет из строя, вам придется обновить таблицы маршрутизации, чтобы он указывал на другой, что, вероятно, займет столько же времени, сколько и создание нового экземпляра.

Вы не можете использовать лямбду, потому что этонеобходимо иметь постоянное назначение IP-адресов, и вы не можете контролировать это с помощью Lambda.Вы можете написать свой собственный прокси-сервер, работающий на EC2, но затраты на него такие же, как и у экземпляра NAT.

...