Here's two ways you can get the public IP or DNS of an EC2 instance:
Ask a remote webserver
This is my preferred method because it's easy to remember. Simply run
curl eth0.me
And you'll be greeted with the IP address of the host that contacted the server.
If curl isn't installed, you can also use wget:
wget -q eth0.me -O-
Full disclosure, I run this website. My goal is to keep it simple and fast. No html, newlines, etc. Just an IPv4 address.
Using EC2's metadata server
If you're on an EC2 instance you can also get this information by curling the metadata server accessible to each ec2 instance.
Public IPv4 address:
curl http://169.254.169.254/latest/meta-data/public-ipv4
Public hostname:
curl http://169.254.169.254/latest/meta-data/public-hostname
Final thoughts
The benefit of using EC2's metadata server is you can also get the public hostname and it's guaranteed to work behind strange NAT or proxy rules. The drawback is it's harder to remember.
Running curl against eth0.me is fast and is easy to remember, but keep mind it will give you the IP that accesses the webserver and not necessarily the ip of the host making the request!
Ask a remote webserver
This is my preferred method because it's easy to remember. Simply run
curl eth0.me
And you'll be greeted with the IP address of the host that contacted the server.
If curl isn't installed, you can also use wget:
wget -q eth0.me -O-
Full disclosure, I run this website. My goal is to keep it simple and fast. No html, newlines, etc. Just an IPv4 address.
Using EC2's metadata server
If you're on an EC2 instance you can also get this information by curling the metadata server accessible to each ec2 instance.
Public IPv4 address:
curl http://169.254.169.254/latest/meta-data/public-ipv4
Public hostname:
curl http://169.254.169.254/latest/meta-data/public-hostname
Final thoughts
The benefit of using EC2's metadata server is you can also get the public hostname and it's guaranteed to work behind strange NAT or proxy rules. The drawback is it's harder to remember.
Running curl against eth0.me is fast and is easy to remember, but keep mind it will give you the IP that accesses the webserver and not necessarily the ip of the host making the request!