List public IP addresses of EC2 instances

BashAmazon Web-ServicesAmazon Ec2Aws CliJq

Bash Problem Overview


I want to list the public IP addresses of my EC2 instances using Bash, separated by a delimiter (space or a new-line).

I tried to pipe the output to jq with aws ec2 describe-instances | jq, but can't seem to isolate just the IP addresses.

Can this be done by aws alone, specifying arguments to jq, or something else entirely?

Bash Solutions


Solution 1 - Bash

Directly from the aws cli:

aws ec2 describe-instances \
  --query "Reservations[*].Instances[*].PublicIpAddress" \
  --output=text

Solution 2 - Bash

  • Filter on running instances (you can drop that part if you don't need it)
  • Query for each PublicIPaddress and the Name Tag, handling when Name isn't set
aws ec2 describe-instances \
  --filter "Name=instance-state-name,Values=running" \
  --query "Reservations[*].Instances[*].[PublicIpAddress, Tags[?Key=='Name'].Value|[0]]" \
  --output text

Solution 3 - Bash

The below command would list the IP addresses of all your running EC2 instances

aws ec2 describe-instances | grep PublicIpAddress | grep -o -P "\d+\.\d+\.\d+\.\d+" | grep -v '^10\.'

Hope that answers your query...

But this works without all the errors about access:

wget -qO- http://instance-data/latest/meta-data/public-ipv4/|grep .

Solution 4 - Bash

You can use instance metadata so you can run the following command from the ec2 instance:

curl http://169.254.169.254/latest/meta-data/public-ipv4

and it will give you the public IP of the instance. If you want the private IP, you will run

curl http://169.254.169.254/latest/meta-data/local-ipv4

Solution 5 - Bash

aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"

Refer: http://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBas PeetersView Question on Stackoverflow
Solution 1 - BashJulio FaermanView Answer on Stackoverflow
Solution 2 - BashBrad GiaccioView Answer on Stackoverflow
Solution 3 - BashA Null PointerView Answer on Stackoverflow
Solution 4 - BashFrederic HenriView Answer on Stackoverflow
Solution 5 - BashSarat ChandraView Answer on Stackoverflow