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.
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.small
einzelne Instanzen.
Wenn dies beim Starten nicht möglich ist, muss ich die elastische IP mithilfe der Funktion EC2.disassociateAddress von der Instanz trennen .
Antworten:
Bei Verwendung des Umgebungstyps "Einzelinstanz" erhalten Sie immer eine EIP.
Aus dem Beanstalk-Entwicklerhandbuch, Umgebungstypen :
Das Deaktivieren der Option "Öffentliche IP-Adresse zuordnen" hat keine Auswirkungen.
Wechseln Sie zur Umgebung "Lastausgleich, automatische Skalierung", um ohne EIP auszukommen.
quelle
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 :
Die automatisch zugewiesenen EIPs, die mit einer neuen Instanz geliefert werden, kosten nichts und verschwinden automatisch, wenn die Instanz außer Betrieb genommen wird.
quelle
aws:ec2:vpc:AssociatePublicIpAddress
in 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.aws:ec2:vpc:AssociatePublicIpAddress
gilt nur für die ec2-Instanz. Wenn Sie den Wert auf false setzen, hatdisassociateAddress
die Instanz keine öffentliche IP- Adresse .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).
quelle
{ "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },
Trotzdem wird Elastic IP dieser Instanz zugeordnet. Irgendeine Ahnung?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.
quelle