web-dev-qa-db-fra.com

Est-il possible d'obtenir un ID d'instance AWS EC2 basé sur son adresse IP

J'ai une liste de propriété intellectuelle adressée, je souhaite trouver si les instances associées à l'adresse IP sont toujours en cours d'exécution ou terminées. Je lance et termine beaucoup d'instances sur la base quotidienne, je veux simplement supprimer leurs certificats de Puppetmaster.

S'il y a une méthode alternative, je peux atteindre mon objectif, je peux le faire.

8
Ramesh Kumar

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

Devrait faire ce dont vous avez besoin.

utilisez le nom du filtre de private-ip-address Pour sélectionner Utilisation d'une adresse privée dans votre VPC.

Pipe à travers quelque chose comme

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

si vous voulez l'instanceID correspondant

11
Jamie W

Une autre approche serait d'utiliser Evénements Cloudwatch Pour écouter les instances EC2 étant terminées et avoir l'auditeur (qui pourrait être une Lambda fonction ou un service personnalisé à l'écoute des SQS ) Supprimez les certificats correspondants de la marionnette.

Les références:

1
markusk

Vous pouvez utiliser des formats --Quisery and --Output si vous souhaitez utiliser cela dans un script Bash.

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

Cela vous donnera une réponse textuelle sans formatage JSON

i-03c1ad0d6abe32323
1
Mihir Bhende