如何识别Amazon AWS EC2实例?

3
有没有一个系统文件可以权威地告诉我主机是否为Amazon AWS EC2实例?
附加问题:没有安装任何新程序的情况下,是否有一条命令可以告诉我EC2实例的一些基本参数?
上下文:
我有一个收集信息的脚本。 如果我在EC2实例上运行该脚本,则某些“标准”命令不可用, 例如:dmidecode(这几乎什么都没有给我)或virt-what。
我知道/usr/bin/ec2-describe-instances、metadata脚本的wget或由元数据报告的单个组件的wget, 但我不想安装任何新程序,并且我需要工具来描述主机本身(因为脚本在本地运行), 而不是查询另一个主机,或传递必须从另一个必须先安装的脚本中获得的密钥。 也许wget用于特定元数据信息是我可以使用的最佳工具?
谢谢。
3个回答

6

我不能保证这个方法在Ubuntu 12.04以外的AMI上适用(我使用的是ami-8e987ef9) - 请自行测试。

如果你真的想避免像@Rico建议的从magic IP 169.254.169.254和元数据获取此信息,以下是你可能想要检查的内容:

### 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命令。不过我更建议使用包含metadata信息的魔术IP/usr/bin/ec2metadata是Ubuntu 12.04上一个由Python编写的实用程序,实际上它是查询169.254.169.254的。

3

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

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

查看所有元数据选项:

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

如果您得到的结果不是“200”,那么它就不是一个 EC2 实例。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接