Is it possible to get aws ec2 instance id based on its IP address

21,190

Solution 1

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

Should do what you need.

use the filter name of private-ip-address to select using private address in your VPC.

Pipe through something like

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

if you want the corresponding InstanceID

Solution 2

You can use --query and --output formats if you want to use this in a bash script.

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

This will give you text response without json formatting

i-03c1ad0d6abe32323

Solution 3

An alternative approach would be to use CloudWatch Events to listen for EC2 instances being terminated, and have the listener (which could be a Lambda function, or some custom service listening to SQS) remove the corresponding certificates from Puppet.

References:

Share:
21,190

Related videos on Youtube

Ramesh Kumar
Author by

Ramesh Kumar

I am Linux freak.. :)

Updated on September 18, 2022

Comments

  • Ramesh Kumar
    Ramesh Kumar almost 2 years

    I have list of IP addressed, I want to find if instances associated with the IP address are still running or terminated. I am launching and terminating lot of instances on daily basis, just want to remove their certificates from puppetmaster.

    If there is any alternative method, I can achieve my goal, I can do that.

  • markusk
    markusk almost 6 years
    You don't need to use jq, you can pass a --query option to extract parts of the output: aws ec2 describe-instances --filter Name=ip-address,Values=IP_1,..IP_N --query 'Reservations[].Instances[].[InstanceId,PublicIpAddress]See Controlling Command Output from the AWS Command Line Interface for more details. Note that --query uses JMESPath, which is slightly different from jq.