我运行此命令从EC2实例获取实例id,请求是如何处理的,服务如何知道要返回哪些详细信息?
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
谢谢
发布于 2011-09-21 12:01:00
从高层次上讲,wget
是一个发起HTTP web请求(假装是浏览器)的命令,这些选项告诉它将结果响应输出到stdout (如您所见)。
正如在虚拟机中运行的实例所看到的那样,由于EC2 dom0主机控制着网络堆栈,因此EC2可以随心所欲地处理169.254.169.254的网络流量。
在这种情况下,EC2知道发出请求的是哪个实例(无论是基于由EC2控制的内部IP地址,还是基于dom0主机可能在请求通过网络发送之前就在处理请求的事实)。
因此,EC2知道哪个实例发出请求,EC2知道每个实例的所有信息,因此EC2可以返回请求的元数据,包括实例id。
亚马逊还没有公布他们是如何实现这一功能的,但他们确实保证它将为请求实例返回正确的数据,而不会有任何其他人干预。
您可以在此处了解有关可用的EC2元数据的更多信息:
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?AESDG-chapter-instancedata.html
除非您碰巧在试图模拟EC2的系统上运行,否则魔术IP地址169.254.169.254和相应的元数据URL将不会在EC2实例之外工作。
发布于 2012-12-14 10:39:29
您可以使用ec2metadata
ec2metadata --instance-id
https://stackoverflow.com/questions/7496331
复制相似问题