如何在命令行login时获取ec2 Linux实例信息(public dns,AMI等)

我需要一些方法来确定当我login到一个Linux ec2实例的时候我正在使用哪个实例。 我想能够从命令行唯一标识实例,并将其与http://console.aws.amason.com关联

以下任何一项都会有所帮助:

AMI Private DNS Public DNS Tags 

我正在使用Ubuntu和Red Hat实例。

我假设你想要从bash shell,而不是与boto python库或类似的…

您应该能够查询169.254.169.254上的元数据服务。

例如

AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id)

您可以获取元数据可用的列表:

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

这在http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.htmllogging

注意:我更熟悉OpenStack的元数据服务,但是它是基于Amazon EC2服务build模的。 可用数据的数量和types是不同的,但访问它是相同的。

就我个人而言,我只是碰运气。 (部分傀儡)

 ec2_ami_id => ami-ffffff
 ec2_ami_launch_index => 0
 ec2_ami_manifest_path =>(未知)
 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

也许这样?

简单的命令行访问Amazon EC2和Amazon S3 http://aws.amazon.com/developertools/739

您可以使用两种方法获取EC2实例的信息:

  1. 从EC2 API访问实例元数据和用户数据

    从您的实例的CLI使用以下URI来检索所有实例元数据。

    http://169.254.169.254/latest/meta-data/

    您将看到可用类别的列表。 如果您需要AMI Id请求curl请求:

    curl http://169.254.169.254/latest/meta-data/ami-id

  2. 使用实例元数据查询工具

    这基本上是第一种方法的包装,请参阅https://aws.amazon.com/code/1825

    某些实例types会在预装此工具时出现,而在其他情况下则需要下载并安装该工具。

    一旦工具存在,只需执行:

    ec2metadata

    您应该看到所有实例属性的列表,这是编程方式使用该信息非常方便。

如果要在通过SSHlogin到shell时识别实例,则可以在启动实例时使用EC2的“用户数据”function将实例ID添加到CLI提示符。

启动实例时,只需将以下脚本添加到用户数据字段:

 #cloud-config apt_upgrade: false preserve_hostname: true runcmd: - hostname "`ec2metadata --instance-id`" - echo "127.0.0.1 `ec2metadata --instance-id`" >> /etc/hosts - echo "`ec2metadata --instance-id`" > /etc/hostname 

该脚本将在开始时执行,并使用实例ID更改实例的主机名。

您可以使用上述两种方法之一以及任何元数据属性来标识实例。