Amazon EC2实例元数据

San*_*h S 14 amazon-ec2

我运行此命令以从EC2实例获取实例ID,请求如何处理以及服务如何知道要发回的详细信息?

wget -q -O - http://169.254.169.254/latest/meta-data/instance-id

谢谢

Eri*_*ond 24

在较高级别,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实例之外运行.


Rag*_*gar 5

您可以使用 ec2metadata

ec2metadata --instance-id
Run Code Online (Sandbox Code Playgroud)

  • 如果查看此ec2metadata命令的源代码,它只需在元数据URL http://169.254.169.254/latest/meta-data/上调用curl. (2认同)