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


10

Я создаю инструмент для развертывания образов Docker в EC2 через ElasticBeanstalk, чтобы команда разработчиков могла быстро продемонстрировать свою работу без слияния. Я не хочу, чтобы Elastic IP был включен для этих приложений, поскольку они недолговечны.

Причина, по которой я спрашиваю об этом, заключается в том, что если мой инструмент создает более 5 приложений (и это происходит довольно быстро), то любое новое приложение не будет работать, потому что Elastic IP не может быть назначен новому приложению. Это связано с тем, что в учетной записи AWS обычно доступно максимум 5 эластичных IP-адресов . Я могу зайти в веб-консоль aws и выбрать «Disassociate Elastic IP Address» (см. Ниже) в экземпляре, после чего экземпляр ec2 получит новый ip (через несколько минут). Это то, что я хочу, но я хочу сделать это программно, и предпочел бы загружать приложение без него, а не делать это после создания экземпляра.

отключить пункт меню

Можно ли использовать параметр конфигурации, чтобы отключить Elastic IP для нового экземпляра?

Я использую узел aws-sdk , но подойдут любые советы на любом языке.

Я создаю m1.smallотдельные экземпляры.

Если это невозможно при запуске, мне придется отсоединить Elastic IP от экземпляра, используя функцию EC2.disassociateAddress .


Если вы запускаете в частной подсети: stackoverflow.com/questions/39086022/…
lonewarrior556

Ответы:


10

При использовании типа среды «Один экземпляр» вы всегда получаете EIP.

Из руководства разработчика Beanstalk, Типы среды :

Среда с одним экземпляром содержит один экземпляр Amazon EC2 с эластичным IP-адресом.

Отключение параметра «Связать публичный IP-адрес» не имеет никакого эффекта.

Переключитесь на среду «Балансировка нагрузки, автоматическое масштабирование», чтобы обойтись без EIP.


В отличие от других ответов здесь, это фактически решило мою проблему, поэтому спасибо :) Для будущих путешественников в новом диалоговом окне «Создание среды» вы выбираете опцию «Балансировка нагрузки» под кнопкой «Настроить дополнительные параметры» в конце создания среды. сформироваться.
Джейкоб Дэвис-Ханссон

1

Я не хочу, чтобы Elastic IP был включен для этих приложений, поскольку они недолговечны.

Если вы находитесь в общедоступной подсети VPC (что вполне вероятно), она необходима для того, чтобы этот экземпляр мог взаимодействовать с Интернетом. Согласно http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html :

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

Автоматически назначенные EIP, которые идут с новым экземпляром, ничего не стоят, и они автоматически исчезают, когда экземпляр выводится из эксплуатации.


Спасибо за ваш ответ, я добавил дополнительную информацию к вопросу, объясняя проблему, которую я вижу, и как я могу обойти ее через веб-консоль. Возможно, я неправильно понимаю, как работает AWS, но вы могли бы посоветовать дальше, я был бы очень благодарен.
ред.

@ed. Я не очень знаком с EB, но, похоже, это из документов, которые вы хотите установить aws:ec2:vpc:AssociatePublicIpAddressв конфигурации EB (и что это свойственно EB одного экземпляра). Кроме того, попросите AWS увеличить ваш лимит EIP - по моему опыту, они с радостью предоставят его в такой ситуации.
ceejayoz

ура, я попробую это.
ред.

Я пробовал флаг выше, но безрезультатно. Я думаю, что я просто собираюсь вызвать disassociateAddress через SDK.
ред.

1
Для записи: aws:ec2:vpc:AssociatePublicIpAddressтолько для экземпляра ec2, если вы установите значение false, то disassociateAddressэкземпляр не будет иметь публичный IP-адрес.
ред.

0

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

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).


Я добавил это в конфигурацию EBS: { "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },несмотря на это, Elastic IP ассоциируется с этим экземпляром. Любая подсказка?
Костанос

1
это не правда, это не влияет на eip
A-Developer-Has-No-Name

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.