Назад | Перейти на главную страницу

Запускать экземпляры через Elastic Beanstalk без настройки Elastic IP

Я создаю инструмент для развертывания образов 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, которые поставляются с новым экземпляром, ничего не стоят, и они автоматически удаляются, когда экземпляр выводится из эксплуатации.

Существует вариант среды эластичного бобового стебля, который может вам подойти.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-elbloadbalancer

Пространство имен: aws: ec2: vpc AssociatePublicIpAddress: false

Если вы установите его, все узлы, созданные этой средой, не будут иметь общедоступного IP-адреса. Для входящего трафика придется использовать балансировщик нагрузки. VPC и подсети должны быть связаны со шлюзом NAT или интернет-шлюзом для получения исходящего доступа в Интернет. Если у вас нет исходящего доступа в Интернет, сборка Elastic Beanstalk завершится ошибкой (она не сможет получить доступ к сервисам AWS).

После того, как вы отключите эластичный IP-адрес, у вас будет около 10 секунд, чтобы «освободить» его. Если вы его отпустите, он больше не вернется.