How do I get ec2 Linux instance info while logged-in on the command-line (public dns, AMI, etc.)
Solution 1:
I'm assuming you want to do this from the bash shell rather than with the boto python library or similar...
You should be able to query the metadata service on 169.254.169.254.
e.g.
AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id)
You can get a listing of what meta-data is available with:
curl http://169.254.169.254/latest/meta-data/
This is documented at http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html
Note: I am more familiar with openstack's metadata service, but that was modelled on the Amazon EC2 service. The quantity and types of data available are different, but accessing it is the same.
Solution 2:
Personally, i just run facter. (Part of puppet)
ec2_ami_id => ami-ffffff ec2_ami_launch_index => 0 ec2_ami_manifest_path => (unknown) ec2_block_device_mapping_ebs1 => /dev/sda ec2_block_device_mapping_ebs3 => /dev/sdf ec2_block_device_mapping_ephemeral0 => /dev/sdb ec2_block_device_mapping_ephemeral1 => /dev/sdc ec2_block_device_mapping_ephemeral2 => /dev/sdd ec2_block_device_mapping_ephemeral3 => /dev/sde ec2_block_device_mapping_root => /dev/sda1 ec2_hostname => ip-xxx.xxx.xxx.xxx.ap-southeast-1.compute.internal ec2_instance_id => i-e999fff4 ec2_instance_type => m1.medium ec2_kernel_id => aki-a9999af4 ec2_local_hostname => ip-xxx.xxx.xxx.xxx.ap-southeast-1.compute.internal ec2_local_ipv4 => xxx.xxx.xxx.xxx ec2_placement_availability_zone => ap-southeast-1b ec2_profile => default-paravirtual ec2_public_hostname => ec2-xxx.xxx.xxx.xxx.ap-southeast-1.compute.amazonaws.com ec2_public_ipv4 => xxx.xxx.xxx.xxx