Is it possible to get aws ec2 instance id based on its IP address
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:
- Automating Amazon EC2 with CloudWatch Events
- New CloudWatch Events – Track and Respond to Changes to Your AWS Resources
Related videos on Youtube
![Ramesh Kumar](https://i.stack.imgur.com/zWBL1.jpg?s=256&g=1)
Comments
-
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 almost 6 yearsYou 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 fromjq
.