Ich werde eine Reihe von EC2-Instanzen in einer automatischen Skalierungsgruppe von Elastic Beanstalk in einem Standard-Subnetz in einer VPC haben. Die App auf diesen EC2-Instanzen muss eine Verbindung zu einem Drittanbieter herstellen, der eine IP-Adressen-Whitelist verwendet, um den Zugriff zu ermöglichen. Daher benötige ich eine oder mehrere statische IP-Adressen, die ich diesem Dienstanbieter geben kann, damit sie zur Whitelist hinzugefügt werden können. Ich verstehe, dass der einzige Weg, eine statische IP zu erhalten, darin besteht, eine elastische IP-Adresse zu erhalten. Und ich kann die Elastic IP-Adresse immer nur einer EC2-Instanz zuordnen - ich kann sie nicht meinem gesamten Subnetz oder Internet-Gateway zuordnen (ist das richtig?). Brauche ich eine Elastic IP für jede EC2-Instanz, damit jede Instanz separat auf die Whitelist gesetzt werden kann? Wie würde das funktionieren, wenn die automatische Skalierung eine weitere Instanz hinzufügt? Sollte ich eine EC2-Instanz mit einer elastischen IP haben, und den gesamten ausgehenden Verkehr über diese Instanz leiten? Wenn ja, muss diese Instanz nur für diesen Zweck eingerichtet sein, oder kann es sich um eine der Instanzen handeln, auf denen meine App ausgeführt wird?
quelle
Ich verstehe, dass dies ein alter Thread ist - für jemanden, der jetzt einen ähnlichen Anwendungsfall hat, wäre AWS nat-gateway eine bessere Lösung.
quelle
Ich habe nicht genug Ruf, um die obigen Antworten zu kommentieren, aber ich wollte einige Informationen hinzufügen, die Sie wissen müssen, wenn Sie ein NAT-Gateway verwenden, um dies zu erreichen. Wenn Sie ein NAT-Gateway erstellen, wählen Sie ein Subnetz und eine elastische IP-Adresse aus.
Zuerst habe ich das NAT-Gateway zum selben Subnetz hinzugefügt, in dem sich mein Elastic Load Balancer und meine EC2-Instanzen befanden. Anschließend müssen Sie das NAT-Gateway zu Ihrer Routentabelle hinzufügen. Ich habe das NAT-Gateway als Ziel für die IP meines externen Datenbankservers hinzugefügt, mit dem ich Kontakt aufnehmen wollte. Dies führte dazu, dass die in meinem elastischen Bohnenstiel gehosteten Anwendungen eine Zeitüberschreitung aufwiesen. Dies liegt daran, dass sie versucht haben, über NAT eine Verbindung zu dieser externen Datenbank herzustellen. Sie erreichten das NAT, und dann versuchte das NAT, über das Internet auf meinen Server zuzugreifen, und suchte in der Routentabelle nach dem Subnetz, in dem es sich befand, das auf sich selbst zurückwies, und erstellte eine Schleife.
Die Lösung besteht darin, vor dem Erstellen Ihres NAT-Gateways ein neues Subnetz nur für das NAT zu erstellen, damit das NAT über ein eigenes Subnetz und eine eigene Routentabelle verfügt. Zeigen Sie in der Routentabelle des NAT den gesamten Datenverkehr auf das Internet-Gateway. Zeigen Sie in Ihrer Hauptroutentabelle Ihre externe IP auf NAT. Wenn Ihre EC2-Instanzen dann versuchen, eine Verbindung zu Ihrer externen IP-Adresse herzustellen, werden sie in der Hauptroutentabelle (oder in der Routentabelle, die Sie für die Subnetze definiert haben, in denen sich Ihre Instanzen befinden) nachgeschlagen und die NAT gefunden. Dann schlägt Ihr NAT diese IP in seiner eigenen Routentabelle nach und findet das Internet.
quelle