Amazon ec2 如何识别AmazonAWSEC2实例?

Amazon ec2 如何识别AmazonAWSEC2实例?,amazon-ec2,Amazon Ec2,是否有一个系统文件权威性地告诉我主机是否是AmazonAWSEC2实例 优点:在不安装任何新的东西的情况下,是否有命令可以告诉我EC2实例的一些基本参数 背景: ~~~~~~~~ 我有一个收集信息的脚本。 如果在EC2实例上运行脚本,则某些“标准”命令不可用, 例如:dmidecode(这几乎没有给我什么),或者virt what 我知道/usr/bin/ec2描述实例,或者wget for metadata脚本,或者wget 对于元数据报告的单个组件,但我不想安装任何东西 新的,我需要这个工具

是否有一个系统文件权威性地告诉我主机是否是AmazonAWSEC2实例

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

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

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


谢谢

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

curl http://169.254.169.254/latest/meta-data/instance-id
有关所有元数据选项的列表:

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

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

我不能保证它能在Ubuntu 12.04以外的任何其他AMI上工作(我使用的是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

不过,我更愿意建议将神奇的IP与元数据一起使用


在Ubuntu12.04上还有
/usr/bin/ec2metadata
,这是一个用Python编写的util,它实际上是从文档中查询
169.254.169.254

[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实例上运行