如何识别 Amazon AWS EC2 实例?

use*_*493 3 amazon-ec2

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

加分点:在不安装任何新东西的情况下,是否有一个命令可以告诉我 EC2 实例的一些基本参数?

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

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

谢谢

Mic*_*sek 5

我不能保证这适用于 Ubuntu 12.04 以外的任何其他 AMI(我使用的是 ami-8e987ef9) - 请自行测试。

如果您真的想避免从@Rico 建议的魔法IP169.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
Run Code Online (Sandbox Code Playgroud)

也许环顾四周/var/lib/cloud会为您提供一些您需要的信息,而无需使用curl.

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

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