Starten Sie Instanzen über Elastic Beanstalk, ohne dass Elastic IP konfiguriert ist

10

Ich erstelle ein Tool zum Bereitstellen von Docker-Images für EC2 über ElasticBeanstalk, damit das Entwicklerteam seine Arbeit schnell vorführen kann, ohne sie zusammenführen 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 wenn mein Tool mehr als 5 Apps erstellt (und es ziemlich schnell funktioniert), jede neue App fehlschlägt, weil der neuen App keine elastische IP zugewiesen werden kann. Dies liegt daran, dass für ein AWS-Konto normalerweise maximal 5 elastische IPs verfügbar sind . Ich kann zur aws-Webkonsole gehen und für eine Instanz die Option "Elastische IP-Adresse trennen" (siehe unten) auswählen. Danach erhält die ec2-Instanz eine neue IP (nach einigen Minuten). Dies ist, was ich will, aber ich möchte es programmgesteuert tun und würde es vorziehen, die App ohne sie zu starten, anstatt es zu tun, sobald die Instanz erstellt ist.

Menüoption trennen

Gibt es eine Konfigurationsoption, mit der ich Elastic IP für die neue Instanz deaktivieren kann?

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

Ich erstelle m1.smalleinzelne Instanzen.

Wenn dies beim Starten nicht möglich ist, muss ich die elastische IP mithilfe der Funktion EC2.disassociateAddress von der Instanz trennen .

ed.
quelle
Wenn Sie in einem privaten Subnetz starten
lonewarrior556

Antworten:

10

Bei Verwendung des Umgebungstyps "Einzelinstanz" erhalten Sie immer eine EIP.

Aus dem Beanstalk-Entwicklerhandbuch, Umgebungstypen :

Eine Einzelinstanzumgebung enthält eine Amazon EC2-Instanz mit einer elastischen IP-Adresse.

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

Wechseln Sie zur Umgebung "Lastausgleich, automatische Skalierung", um ohne EIP auszukommen.

Jens Bannmann
quelle
Im Gegensatz zu den anderen Antworten hier hat dies mein Problem tatsächlich gelöst. Vielen Dank :) Für zukünftige Reisende wählen Sie im neuen Dialogfeld "Umgebungserstellung" am Ende der Umgebungserstellung die Option "Lastausgleich" unter der Schaltfläche "Weitere Optionen konfigurieren" bilden.
Jacob Davis-Hansson
1

Ich möchte nicht, dass Elastic IP für diese Apps aktiviert wird, da sie nur von kurzer Dauer sind.

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

Damit eine Instanz in Ihrem öffentlichen Subnetz mit dem Internet kommunizieren kann, muss sie eine öffentliche IP-Adresse oder eine elastische IP-Adresse haben, die einer privaten IP-Adresse in Ihrer Instanz zugeordnet ist . Ihrer Instanz ist nur der private (interne) IP-Adressraum bekannt, der in der VPC und im Subnetz definiert ist. Das Internet-Gateway stellt logischerweise das Eins-zu-Eins-NAT für Ihre Instanz bereit. Wenn der Datenverkehr Ihr VPC-Subnetz verlässt und ins Internet geht, wird das Feld für die Antwortadresse auf die öffentliche IP-Adresse oder die elastische IP-Adresse Ihrer Instanz festgelegt und nicht seine private IP-Adresse. Umgekehrt wird bei Datenverkehr, der für die öffentliche IP-Adresse oder die elastische IP-Adresse Ihrer Instanz bestimmt ist, die Zieladresse in die private IP-Adresse der Instanz übersetzt, bevor der Datenverkehr an die VPC übermittelt wird.

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

ceejayoz
quelle
Vielen Dank für Ihre Antwort. Ich habe der Frage weitere Informationen hinzugefügt, in denen das Problem erläutert wird und wie ich es über die Webkonsole umgehen kann. Ich kann falsch verstehen, wie AWS funktioniert - aber Sie könnten weiter raten, ich wäre sehr dankbar.
ed.
@ed. Ich bin mit EB nicht sehr vertraut, aber es sieht aus wie aus den Dokumenten, die Sie aws:ec2:vpc:AssociatePublicIpAddressin Ihrer EB-Konfiguration festlegen möchten (und dass dies nur für EBs mit einer Instanz gilt). Alternativ können Sie AWS um eine Erhöhung Ihres EIP-Limits bitten - meiner Erfahrung nach gewähren sie es in solchen Situationen gerne.
Ceejayoz
Prost, das werde ich versuchen.
ed.
Ich habe die Flagge oben ohne Erfolg versucht. Ich glaube, ich werde disassociateAddress nur über das SDK aufrufen.
ed.
1
Für den Datensatz: aws:ec2:vpc:AssociatePublicIpAddressgilt nur für die ec2-Instanz. Wenn Sie den Wert auf false setzen, hat disassociateAddressdie Instanz keine öffentliche IP- Adresse .
ed.
0

Es gibt eine elastische Bohnenstiel-Umgebungsoption, nach der Sie vielleicht suchen.

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

Namespace: aws: ec2: vpc AssociatePublicIpAddress: false

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

Sam
quelle
Ich habe dies zur EBS-Konfiguration hinzugefügt: { "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },Trotzdem wird Elastic IP dieser Instanz zugeordnet. Irgendeine Ahnung?
Kostanos
1
Dies ist nicht wahr, es hat keine Auswirkungen auf eip
A-Entwickler-hat-keinen-Namen
0

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

lonewarrior556
quelle