如何识别Amazon AWS EC2实例?

时间:2014-01-29 21:06:14

标签: amazon-ec2

是否有一个系统文件权威地告诉我主机是否是Amazon AWS EC2实例?

奖励点:没有安装任何新东西,是否有一个命令可以告诉我一些EC2实例的基本参数?

上下文: ~~~~~~~~ 我有一个收集信息的脚本 如果我在EC2实例上运行脚本,则某些“标准”命令不可用, 例如:dmidecode(这几乎没有给我任何东西),或者说virt-what。

我知道/ usr / bin / ec2-describe-instances,或wget for metadata script,或wget 对于元数据报告的单个组件,但我不想安装任何东西 新的,我需要工具来描述主机本身(因为脚本在本地运行), 不要查询另一个主机,或传递一个我必须从另一个脚本获取的密钥 我必须先安装。 也许wget的特定元数据信息是我可以使用的最好的工具?

由于

3 个答案:

答案 0 :(得分:4)

我不能保证这对任何其他AMI都有效,而不是Ubuntu 12.04(我使用的是ami-8e987ef9) - 请自己测试一下。

如果您确实希望避免从 magic IP 169.254.169.254和@Rico建议的元数据中获取此信息,您可能需要查看以下内容:

### Datasource EC2
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/instance/datasource 
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/data/previous-datasource 
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2

### Hostname
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/data/previous-hostname 
ip-10-33-59-70

### Instance ID
ubuntu@ip-10-33-59-70:~$ cat /var/lib/cloud/data/previous-instance-id 
i-280ace69

### Instance ID also (check out instance symlink)
ubuntu@ip-10-33-59-70:/var/lib/cloud$ ls -al | grep instance
lrwxrwxrwx  1 root root   22 Jan 29 22:00 instance -> ./instances/i-280ace69
drwxr-xr-x  3 root root 4096 Jan 29 22:00 instances

如果不使用/var/lib/cloud,查看curl可能会为您提供所需的信息。

我宁愿建议使用带有元数据的 magic IP

在Ubuntu 12.04上还有/usr/bin/ec2metadata,一个用Python编写的实用程序实际查询169.254.169.254

答案 1 :(得分:3)

只需使用查询元数据的标准方式

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

有关所有元数据选项的列表:

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

如果你得到的不是'200',那就意味着它不是EC2实例。

答案 2 :(得分:0)

来自文档:

[ec2-user ~]$ cat /sys/hypervisor/uuid

对于HVM:

[ec2-user ~]$ sudo dmidecode --string system-uuid
[ec2-user ~]$ sudo cat /sys/devices/virtual/dmi/id/product_uuid

如果字符串以" ec2"开头?或者" EC2",操作系统在EC2实例上运行。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/identify_ec2_instances.html