2015-11-20 14 views
5

Ich versuche, alle Elastic IPs zu bekommen, die derzeit Instanzen nicht zugewiesen sind.Wie kann ich alle elastischen IPs auswählen, die keiner EC2-Instanz zugeordnet sind?

Es ist einfach, alle die Elastic IP-Adressen zu bekommen dies mit: aws ec2 describe-addresses

Von hier aus wäre es einfach, alle Ergebnisse zu filtern, die keine "AssociationId" haben. Ich bin mir jedoch nicht sicher, wie das mit --query zu tun ist.

Ich weiß, dass die Option --query JMESPath verwendet, um Ergebnisse zu filtern, aber ich habe keine Ahnung, wie ich es sagen soll, um mir alle Ergebnisse zurückzugeben, die kein AssociationId haben. Irgendeine Hilfe?

Danke.

Antwort

9

können Sie überprüfen die Sammlung Adressen für Nullwerte, sondern von AssociationId eine bessere allgemeine Lösung kann besser sein, verwenden InstanceId:

InstanceId -> (string)

Die ID der Instanz dass die Adresse zugeordnet ist (falls vorhanden).

AssociationId -> (string)

Die ID die Zuordnung der Adresse mit einer Instanz in einem VPC darstellt.

Elastic IP-Adressen, die nicht in einer VPC sind nicht über die AssociationId Eigenschaft, aber elastischen IPs in beiden VPC und EC2 Classic wird ausgegeben InstanceId.

Sie können alternativ AssociationId auf die gleiche Weise verwenden, wenn Sie nur IPs in einer VPC interessieren.

Beispiele:

aws ec2 describe-addresses --query 'Addresses[?InstanceId==null]' 

aws ec2 describe-addresses --query 'Addresses[?AssociationId==null]' 

Weiterführende Literatur:

+1

Beachten Sie, dass in einigen Situationen unassociate d EIPs ergeben InstanceId == null und manchmal InstanceId == "". Glauben Sie, dass die Unterscheidung VPC EIPs (Show Null) vs EC2-Classic EIPs (Show "") ist. – jarmod

+0

Danke für den Kommentar. Ich habe zusätzlich gesehen, dass EC2-Classic EIPs in der Ergebnismenge ("" InstanceId ": null') explizit Null anzeigen, und VPC EIPS enthält einfach" InstanceId "überhaupt nicht, wenn es nicht gesetzt ist. Für diese Situation gibt nur das Überprüfen von null beide Fälle von meiner Konsole zurück. –

+0

Schätzen Sie es - das scheint ein guter Weg zu gehen. Mir war nicht bewusst, dass ich bei nicht vorhandenen Parametern nach null suchen könnte. Vielen Dank! – joshft91