Search code examples
amazon-web-servicesamazon-ec2

Get Public IP Address on current EC2 Instance


Using Amazon CLI, is there a way to get the public ip address of the current EC2? I'm just looking for the single string value, so not the json response describe-addresses returns.


Solution

  • UPDATE: This answer assumes the instance is configured with Instance Metadata Service v1 (IMDSv1). For v2, see the comments below.


    The AWS Command-Line Interface (CLI) can be used to return information on any/all Amazon EC2 instances, eg:

    $ aws ec2 describe-instances --instance-ids i-0c9c9b44b --query 'Reservations[*].Instances[*].PublicIpAddress' --output text
    
    54.232.200.77
    

    If you are seeking information about the EC2 instance from which you are executing the command, then the current IP address can be obtained via the instance metadata service:

    $ curl http://169.254.169.254/latest/meta-data/
    
    ami-id
    ami-launch-index
    ami-manifest-path
    block-device-mapping/
    hostname
    iam/
    instance-action
    instance-id
    instance-type
    local-hostname
    local-ipv4
    mac
    metrics/
    network/
    placement/
    profile
    public-hostname
    public-ipv4
    public-keys/
    reservation-id
    security-groups
    services/
    

    So, the private IP address is available via:

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

    The public IP address is available via:

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