Ich habe eine AWS EC2-Instanz bereitgestellt und muss die öffentliche IP-Adresse ermitteln. Wie auch immer, um zu wissen, dass ich zuerst die Instanz-ID meiner Instanz kennen muss.
Ziel:
Nach dem Lesen der Amazon-Dokumentation habe ich eine Java-Methode entwickelt, die die IP aller Instanzen zurückgibt, aber das möchte ich nicht . Ich möchte eine Methode, die nur die Instanz-ID oder die öffentliche IP-Adresse der laufenden Instanz.
%Vor%In diesem Code habe ich ein Array mit den Instanz-IDs aller aktiven Instanzen, aber ich weiß nicht, ob sie "ich" sind oder nicht. Also gehe ich davon aus, dass mein erster Schritt darin besteht, zu wissen, wer ich bin, und dann nach meiner öffentlichen IP-Adresse zu fragen.
Gibt es eine Veränderung, die ich mit der vorherigen Methode machen kann, um mir zu geben, was ich will? Gibt es einen effizienteren Weg, es zu tun?
Ich bin kein Java-Typ. Allerdings druckt mein Ruby-Code die Instance ID
und Public IP
der running
Instanzen wie benötigt:
Sie müssen lediglich die entsprechenden Methoden / Aufrufe in der JAVA SDK-Dokumentation finden. Der Code, den Sie betrachten sollten, ist:
%Vor%Im obigen Block filtere ich nur die laufenden Instanzen.
AND
%Vor% Im obigen Codeblock laufe ich 2 for
loops und ziehe instance.instance_id
sowie instance.public_ip_address
.
Da JAVA SDK und Ruby SDK beide die gleichen AWS EC2-APIs verwenden, müssen ähnliche Einstellungen in JAVA SDK vorhanden sein.
Auch Ihre Frage ist vage in dem Sinne, führen Sie den JAVA-Code von der Instanz aus, deren Instanz-ID benötigt wird? ODER Führen Sie den Java-Code von einer anderen Instanz aus und möchten die Instanz-IDs aller laufenden Instanzen abrufen?
UPDATE:
Aktualisieren der Antworten, wenn sich die Frage geändert hat:
AWS stellt bei jeder gestarteten Instanz einen Metadaten-Service zur Verfügung. Sie können den Metadatendienst lokal abfragen, um die erforderlichen Informationen zu erhalten.
Form bash promp, unter Befehl lieferte die Instanz-ID und die öffentliche IP-Adresse der Instanz
%Vor%Sie müssen herausfinden, wie Sie Daten von obigen URLs in Java ziehen. An diesem Punkt haben Sie genügend Informationen und diese Frage ist in Bezug auf AWS irrelevant, da dies jetzt eher eine JAVA-Frage ist, wie Sie über URLs abfragen können.
Sie möchten die com.amazonaws.util.EC2MetadataUtils Klasse von der aws-java-sdk.
Die folgende Methode gibt die EC2-Instanz-ID zurück.
%Vor%Von hier aus können Sie dann Folgendes tun, um Informationen wie die IP-Adresse (in diesem Beispiel das privateIP) zu erhalten:
%Vor% Sie können dies auch verwenden, um alle Arten von relevanten Informationen über die aktuelle Instanz zu erhalten, auf der das Java-Programm läuft; Ersetzen Sie einfach .getPrivateIPAddress()
durch den entsprechenden Befehl get für die gesuchten Informationen. Liste der verfügbaren Befehle kann hier .
Edit: Für diejenigen, die dies aufgrund der "unbekannten" URL scheuen könnten; Siehe die Amazon-Dokumentation zu diesem Thema, die direkt auf dieselbe URL verweist; Der einzige Unterschied ist, dass sie es nicht über Java, sondern über CLI tun. Ссылка
Sie können den Metadatendienst verwenden, um dies über HTTP abzurufen: Ссылка
ex:
%Vor%Tags und Links java ip amazon-web-services amazon-ec2