Search code examples
amazon-ec2amazon-web-services

How to get an AWS EC2 instance ID from within that EC2 instance?


How can I find out the instance id of an ec2 instance from within the ec2 instance?


Solution

  • See the EC2 documentation on the subject.

    Run:

    wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
    

    If you need programmatic access to the instance ID from within a script,

    die() { status=$1; shift; echo "FATAL: $*"; exit $status; }
    EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
    

    Here is an example of a more advanced use (retrieve instance ID as well as availability zone and region, etc.):

    EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
    test -n "$EC2_INSTANCE_ID" || die 'cannot obtain instance-id'
    EC2_AVAIL_ZONE="`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone || die \"wget availability-zone has failed: $?\"`"
    test -n "$EC2_AVAIL_ZONE" || die 'cannot obtain availability-zone'
    EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"
    

    You may also use curl instead of wget, depending on what is installed on your platform.