Я создаю инструмент для развертывания образов Docker в EC2 через ElasticBeanstalk, чтобы команда разработчиков могла быстро продемонстрировать свою работу без необходимости слияния. Я не хочу, чтобы для этих приложений был включен эластичный IP-адрес, поскольку они недолговечны.
Причина, по которой я спрашиваю об этом, заключается в том, что если мой инструмент создает более 5 приложений (а это происходит довольно быстро), любое новое приложение выйдет из строя, потому что новому приложению нельзя назначить эластичный IP-адрес. Это связано с тем, что учетная запись AWS обычно имеет доступно максимум 5 эластичных IP-адресов. Я могу перейти в веб-консоль aws и выбрать для экземпляра «Отключить эластичный IP-адрес» (см. Ниже), после чего экземпляр ec2 получит новый IP-адрес (через несколько минут). Это то, что я хочу, но я хочу сделать это программно и предпочел бы загружать приложение без него, а не делать это после создания экземпляра.
Есть ли параметр конфигурации, который я могу использовать для отключения эластичного IP-адреса для нового экземпляра?
Я использую узел aws-sdk, но подойдут любые подсказки на любом языке.
Я создаю m1.small
единичные экземпляры.
Если это невозможно при запуске, мне придется отсоединить эластичный IP-адрес от экземпляра, используя EC2.disassociateAddress функция.
При использовании типа среды «Один экземпляр» вы всегда получаете EIP.
Из Руководство разработчика Beanstalk, Типы среды:
Среда с одним экземпляром содержит один экземпляр Amazon EC2 с эластичным IP-адресом.
Отключение параметра «Связать общедоступный IP-адрес» не имеет никакого эффекта.
Переключитесь на среду «Балансировка нагрузки, автомасштабирование», чтобы обойтись без EIP.
Я не хочу, чтобы для этих приложений был включен эластичный IP-адрес, поскольку они недолговечны.
Если вы находитесь в общедоступной подсети VPC (что вполне вероятно), она требуется для того, чтобы этот экземпляр мог связываться с Интернетом. За http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html:
Чтобы позволить экземпляру в вашей общедоступной подсети взаимодействовать с Интернетом, он должен иметь общедоступный IP-адрес или эластичный IP-адрес, связанный с частным IP-адресом в вашем экземпляре.. Вашему экземпляру известно только о частном (внутреннем) пространстве IP-адресов, определенном в VPC и подсети. Интернет-шлюз логически предоставляет NAT «один-к-одному» от имени вашего экземпляра, поэтому, когда трафик покидает вашу подсеть VPC и переходит в Интернет, в поле адреса ответа устанавливается общедоступный IP-адрес или эластичный IP-адрес вашего экземпляра. , а не его частный IP-адрес. И наоборот, трафик, предназначенный для общедоступного IP-адреса или эластичного IP-адреса вашего экземпляра, получает адрес назначения, переведенный в частный IP-адрес экземпляра, прежде чем трафик будет доставлен в VPC.
Автоматически назначаемые EIP, которые поставляются с новым экземпляром, ничего не стоят, и они автоматически удаляются, когда экземпляр выводится из эксплуатации.
Существует вариант среды эластичного бобового стебля, который может вам подойти.
Пространство имен: aws: ec2: vpc AssociatePublicIpAddress: false
Если вы установите его, все узлы, созданные этой средой, не будут иметь общедоступного IP-адреса. Для входящего трафика придется использовать балансировщик нагрузки. VPC и подсети должны быть связаны со шлюзом NAT или интернет-шлюзом для получения исходящего доступа в Интернет. Если у вас нет исходящего доступа в Интернет, сборка Elastic Beanstalk завершится ошибкой (она не сможет получить доступ к сервисам AWS).
После того, как вы отключите эластичный IP-адрес, у вас будет около 10 секунд, чтобы «освободить» его. Если вы его отпустите, он больше не вернется.