Ist es möglich, die aws ec2-Instanz-ID basierend auf ihrer IP-Adresse abzurufen?

8

Ich habe eine Liste der adressierten IP-Adressen. Ich möchte herausfinden, ob mit der IP-Adresse verknüpfte Instanzen noch ausgeführt oder beendet werden. Ich starte und beende täglich viele Instanzen und möchte nur deren Zertifikate vom Puppenmeister entfernen.

Wenn es eine alternative Methode gibt, kann ich mein Ziel erreichen, das kann ich tun.

Ramesh Kumar
quelle

Antworten:

11

aws ec2 describe-instances --filter Name=ip-address,Values=IP_1,..IP_N

Sollte tun, was Sie brauchen.

Verwenden private-ip-addressSie den Filternamen von , um die private Adresse in Ihrer VPC auszuwählen.

Pfeife durch so etwas wie

jq -r '.Reservations[].Instances[] | .InstanceId, .PublicIpAddress'

wenn Sie die entsprechende InstanceID möchten

Jamie W.
quelle
1
Sie müssen nicht verwenden jq, sondern können eine --queryOption zum Extrahieren von Teilen der Ausgabe übergeben: Weitere Informationen finden aws ec2 describe-instances --filter Name=ip-address,Values=IP_1,..IP_N --query 'Reservations[].Instances[].[InstanceId,PublicIpAddress]Sie unter Steuern der Befehlsausgabe über die AWS-Befehlszeilenschnittstelle . Beachten Sie, dass JMESPath--query verwendet wird , das sich geringfügig von unterscheidet jq.
Markusk
2

Sie können die Formate --query und --output verwenden, wenn Sie dies in einem Bash-Skript verwenden möchten.

aws ec2 describe-instances --filter Name=private-ip-address,Values=x.x.x.x --query 'Reservations[].Instances[].InstanceId' --output text

Dadurch erhalten Sie eine Textantwort ohne JSON-Formatierung

i-03c1ad0d6abe32323
Mihir Bhende
quelle