2014-01-29 191 views
2

有沒有一個系統文件可以權威地告訴我主機是否是Amazon AWS EC2實例?如何識別Amazon AWS EC2實例?

Bonus point:沒有安裝任何新東西,是否有一個命令會告訴我一些EC2實例的基本參數?

上下文: ~~~~~~~~ 我有一個收集信息的腳本。
如果我在EC2實例上運行腳本,一些「標準」命令不可用,例如 ,例如:dmidecode(這實際上什麼都沒有)或virt-what。

我知道/元數據腳本的/ usr/bin/ec2-describe-instances或wget,或者元數據報告的單個組件的wget ,但我不想安裝任何東西 新的,我需要描述主機本身的工具(因爲腳本在本地運行), 不要詢問另一個主機,或者傳遞一個密鑰,我必須從另一個腳本 獲得我必須先安裝的密鑰。 也許wget特定的元數據信息是我可以使用的最佳工具?

感謝

回答

3

只需使用查詢元數據

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

對於所有元數據選項列表的標準方式:

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

如果你不是一個「200以外的任何'那麼這意味着它不是一個EC2實例。

4

我不能保證這將適用於比Ubuntu 12.04(我正在使用ami-8e987ef9)的任何其他AMI - 請測試自己。

這裏是你可能想什麼,看看你是否真的以避免讓從魔法 IP 169.254.169.254和元數據@Rico這個信息提示:

### Datasource EC2 
[email protected]:~$ cat /var/lib/cloud/instance/datasource 
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2 
[email protected]:~$ cat /var/lib/cloud/data/previous-datasource 
cloudinit.DataSourceEc2.DataSourceEc2: DataSourceEc2 

### Hostname 
[email protected]:~$ cat /var/lib/cloud/data/previous-hostname 
ip-10-33-59-70 

### Instance ID 
[email protected]:~$ cat /var/lib/cloud/data/previous-instance-id 
i-280ace69 

### Instance ID also (check out instance symlink) 
[email protected]:/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

在Ubuntu 12.04上,還有/usr/bin/ec2metadata,一個用Python編寫的實用程序,實際上查詢的是169.254.169.254