As many of you know AWS have Auto-Assigned "Public" IP's and Elastic IP's for the instances, I can get the Elastic IP's via cli with the describe-addresses command: https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-addresses.html


aws ec2 describe-addresses --filters "Name=instance-id,Values=InstanceWithEIP_id" --output=json

And it returns the EIP but I want to know how can I get the Auto-Assigned IP via cli because the command with a instance-id from a non elastic-ip instance returns nothing.


1 Answer 1


You can use the aws describe-instances command instead, like so:

aws ec2 describe-instances --filters "Name=instance-id,Values=i-56b4192a" --output=json | jq -r '.Reservations[].Instances[].NetworkInterfaces[].Association.PublicIp'
  • Hi, thanks for your reply, as I told in the answer the command describe-addresses return nothing because the instance that I want to filter does not have an Elastic IP, instead it have an Auto-Assigned Public IP.
    – Nic
    Aug 22, 2018 at 17:47
  • Sorry, just edited my answer.
    – Itai Ganot
    Aug 22, 2018 at 17:57
  • as I'm working on Windows I have to delete the ' symbols: aws ec2 describe-instances --filters "Name=instance-id,Values=xxxxxxxxx" --output=json | jq -r .Reservations[].Instances[].NetworkInterfaces[].Association.PublicIp and It worked. Thanks a lot
    – Nic
    Aug 22, 2018 at 18:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .