我运行了这个命令来获取EC2实例的实例ID,请求如何处理,服务如何知道要发送哪些详细信息?
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
谢谢
我运行了这个命令来获取EC2实例的实例ID,请求如何处理,服务如何知道要发送哪些详细信息?
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
谢谢
wget
是一个命令,用于发起 HTTP 网络请求(伪装成浏览器),而这些选项告诉它将产生的响应输出到 stdout(即您看到的内容)。
由于 EC2 dom0 主机控制着虚拟机中运行的实例所见到的网络堆栈,因此 EC2 可以处理发送到 169.254.169.254 的网络流量。
在这种情况下,EC2 知道哪个实例正在发出请求(无论是基于由 EC2 控制的您的内部 IP 地址还是基于 dom0 主机可能在发送到网络之前处理请求的事实)。
因此,EC2 知道哪个实例正在发出请求,EC2 知道每个实例的所有信息,因此 EC2 可以返回所请求的元数据,包括实例 ID。
Amazon 没有公开他们如何实现此功能的具体细节,但他们确保它将为请求实例返回正确的数据,并且没有任何其他人干扰的可能性。
您可以在此处了解有关可用 EC2 元数据的更多信息:
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?AESDG-chapter-instancedata.html
魔术 IP 地址 169.254.169.254 和相应的元数据 URL 只能在 EC2 实例内部使用,除非您恰好在运行试图模拟 EC2 的系统上。
ec2metadata
。ec2metadata --instance-id