fragen stichworte

Starten Sie Instanzen über Elastic Beanstalk ohne konfigurierte Elastic IP

Ich erstelle ein Tool, um Docker-Images über ElasticBeanstalk auf EC2 bereitzustellen. Das Dev-Team kann so ihre Arbeit schnell demonstrieren, ohne sich zusammenfügen zu müssen. Ich möchte nicht, dass Elastic IP für diese Apps aktiviert wird, da sie nur von kurzer Dauer sind.

Der Grund, warum ich dies frage, ist, dass eine neue App fehlschlägt, wenn mein Tool mehr als 5 Apps erstellt (und dies ziemlich schnell ist), da der neuen App keine elastische IP zugewiesen werden kann. Dies liegt daran, dass ein AWS-Konto normalerweise maximal 5 verfügbare elastische IPs hat. Ich kann zur aws-Webkonsole gehen und "Disassociate Elastic IP Address" (siehe unten) für eine Instanz auswählen. Danach erhält die ec2-Instanz eine neue IP-Adresse (nach einigen Minuten). Das ist es, was ich will, aber ich möchte es programmgesteuert machen und würde es vorziehen, die App ohne sie zu starten, anstatt es zu tun, sobald die Instanz erstellt wurde.

disassociate menu option

Gibt es eine Konfigurationsoption, die ich verwenden kann, um Elastic IP für die neue Instanz zu deaktivieren?

Ich verwende den Knoten aws-sdk, aber alle Tipps in jeder Sprache reichen aus.

Ich erstelle m1.small einzelne Instanzen.

Wenn dies beim Starten nicht möglich ist, muss ich die Elastic-IP-Adresse mit der Funktion EC2.disassociateAddress von der Instanz trennen.

antworten

Wenn Sie den Umgebungstyp "Einzelinstanz" verwenden, erhalten Sie immer eine EIP.

Von Beanstalk Entwicklerhandbuch, Umgebungstypen:

A single-instance environment contains one Amazon EC2 instance with an Elastic IP address.

Das Deaktivieren der Option "Öffentliche IP-Adresse zuweisen" hat keine Auswirkungen.

Wechseln Sie zu "Load-balancing, Autoscaling" Environment, um ohne EIP auskommen zu können.

I don't want Elastic IP to be enabled for these apps as they are short lived.

Wenn Sie sich im öffentlichen Subnetz einer VPC befinden (was wahrscheinlich ist), ist es erforderlich, dass diese Instanz mit dem Internet kommunizieren kann. Per http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html:

To enable an instance in your public subnet to communicate with the Internet, it must have a public IP address or an Elastic IP address that's associated with a private IP address on your instance. Your instance is only aware of the private (internal) IP address space defined within the VPC and subnet. The Internet gateway logically provides the one-to-one NAT on behalf of your instance, so that when traffic leaves your VPC subnet and goes to the Internet, the reply address field is set to the public IP address or Elastic IP address of your instance, and not its private IP address. Conversely, traffic that's destined for public IP address or Elastic IP address of your instance has its destination address translated into the instance's private IP address before the traffic is delivered to the VPC.

Die automatisch zugewiesenen EIPs, die mit einer neuen Instanz geliefert werden, kosten nichts, und sie verschwinden automatisch, wenn die Instanz außer Betrieb genommen wird.

Es gibt eine Elastic Beanstalk-Umgebung, die möglicherweise das ist, wonach Sie suchen.

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

Namensraum: aws: ec2: vpc AssociatePublicIpAddress: false

Wenn Sie es festlegen, haben alle von dieser Umgebung erstellten Knoten keine öffentliche IP-Adresse. Eingehender Datenverkehr muss einen Load Balancer verwenden. Der VPC und die Subnetze müssen mit einem NAT-Gateway oder einem Internet-Gateway verbunden sein, um einen ausgehenden Internetzugang zu erhalten. Wenn Sie keinen ausgehenden Internetzugang haben, schlägt der Elastic Beanstalk-Build fehl (AWS-Dienste können nicht erreicht werden).

Nachdem Sie die elastische IP-Adresse getrennt haben, haben Sie etwa 10 Sekunden Zeit, um sie zu "freigeben". Wenn Sie es freigeben, wird es nicht zurückkommen.