Метаданные экземпляра Amazon EC2 - PullRequest
14 голосов
/ 21 сентября 2011

Я выполнил эту команду, чтобы получить идентификатор экземпляра из экземпляра EC2, как обрабатывается запрос и как служба узнает, какие данные необходимо отправить обратно?

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

спасибо

Ответы [ 2 ]

24 голосов
/ 21 сентября 2011

На высоком уровне wget - это команда, которая инициирует веб-запрос HTTP (выдавая себя за браузер), и эти опции говорят ему выплевывать полученный ответ на стандартный вывод (то, что вы видите).

Поскольку хост EC2 dom0 управляет сетевым стеком, как это видно на примере вашего экземпляра, работающего на виртуальной машине, EC2 может обрабатывать сетевой трафик до 169.254.169.254 любым способом.

В этом случае EC2 знает, какой экземпляр отправляет запрос (основано ли это на вашем внутреннем IP-адресе, контролируемом EC2, или на том факте, что хост dom0 может обрабатывать запрос еще до того, как он будет отправлен по сети ).

Итак, EC2 знает, какой экземпляр делает запрос, а EC2 знает всю информацию о каждом экземпляре, поэтому EC2 может возвращать запрошенные метаданные, включая идентификатор экземпляра.

Amazon не опубликовала, как именно они реализовали эту функцию, но они гарантируют, что она вернет правильные данные для запрашивающего экземпляра, и никто не будет вмешиваться.

Подробнее о доступных метаданных EC2 можно узнать здесь:

http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?AESDG-chapter-instancedata.html

Магический IP-адрес 169.254.169.254 и соответствующие URL-адреса метаданных не будут работать вне экземпляра EC2, если только вы не работаете в системе, которая пытается эмулировать EC2.

5 голосов
/ 14 декабря 2012

Вы можете использовать ec2metadata

ec2metadata --instance-id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...