Определить зону доступности IP-адреса AWS
В настоящее время я использую Heroku (который использует AWS), и моя программа должна общаться с моим собственным экземпляром EC2. Я сделал свой экземпляр EC2 в том же регионе, что и Herokus', однако, чтобы еще больше сократить расходы, я хочу иметь возможность общаться через частный IP-адрес между моим Heroku dyno и экземпляром EC2 в той же зоне доступности.
Я знаю, что могу перезапустить Heroku для переключения между серверами и потенциально разными зонами доступности, однако есть ли способ определить, находятся ли они в одной зоне доступности или в другой зоне доступности?
Потенциально я могу написать программу, которая перезапустит Heroku до такой степени, что она находится в той же зоне.
1 ответ
Это непростая задача (если ее вообще можно решить), поскольку зоны доступности в первую очередь различаются для каждой учетной записи Amazon EC2, см. FAQ. Как я могу убедиться, что я нахожусь в той же зоне доступности, что и другой разработчик?:
В настоящее время мы не поддерживаем возможность координации запусков в одной и той же зоне доступности через учетные записи разработчиков AWS.
Эрик Хаммонд изучил эту тему и разработал методику, позволяющую обойти это ограничение, см. Раздел Сопоставление зон доступности EC2 для всех учетных записей AWS:
Сводка: имена зон доступности EC2 в разных учетных записях не совпадают с одной и той же базовой физической инфраструктурой. В этой статье объясняется хитрость, с помощью которой можно выяснить, как сопоставлять имена зон доступности между различными учетными записями.
Тем не менее, он подчеркивает соответствующие предостережения:
Обратите внимание, что этот подход не является документированной функцией Amazon EC2. [...]
Amazon может в любое время изменить структуру этих значений, чтобы описанные идентификаторы предложений не могли использоваться между учетными записями или не отображались в какой-либо общей инфраструктуре.
Уловка, кажется, работает в настоящее время, поэтому вы можете достичь своей цели, применяя эту технику, но будьте готовы к тому, что в конечном итоге вы не найдете надежного решения.