Как получить имя экземпляра из экземпляра в AWS?

Я пытаюсь настроить средство для регистрации экземпляра в route53 автоматически при создании экземпляра с использованием соли и этой статьи: http://cantina.co/2012/01/25/automated-dns-for-aws-instances-using-route-53/ p >

В статье используется ec2-metadata, чтобы получить идентификатор экземпляра и имя хоста. Мне интересно, есть ли способ, используя bash внутри экземпляра, чтобы вместо этого получить имя экземпляра. ec2-metadata только, кажется, показывает идентификатор экземпляра. Спасибо заранее.

Ответ 1

В первую очередь Amazon EC2 Служба метаданных экземпляра также предоставляет довольно много других имен, кроме instance-id, если это может быть то, что вы ищете - см. Категории метаданных экземпляра:

  • hostname - Частное имя хоста экземпляра. В случаях присутствия нескольких сетевых интерфейсов это относится к устройству eth0 (устройство, для которого номер устройства равен 0).
  • local-hostname - Частное имя хоста DNS для экземпляра. В случаях присутствия нескольких сетевых интерфейсов это относится к устройству eth0 (устройство, для которого номер устройства равен 0).
  • public-hostname - публичный DNS-запрос экземпляра. Если экземпляр находится в VPC, эта категория возвращается только в том случае, если для атрибута enableDnsHostnames установлено значение true.

Если вы ищете имя как показано в AWS Management Console, вам действительно нужно прибегнуть к использованию одного из Инструменты для веб-служб Amazon, чтобы получить его - это имя на самом деле является обычным тегом с ключевым именем (см. Отметка ваших ресурсов Amazon EC2), которая, по-видимому, используется для большинства служб AWS с очевидной целью.

Здесь, как получить его с Интерфейс командной строки AWS (пропуская область и учетные данные):

aws ec2 describe-tags \
--filters Name=resource-id,Values=i-abcd1234 Name=key,Values=Name \
--query Tags[].Value --output text

Ответ 2

Не уверен, что это будет выглядеть с помощью bash, но вы можете использовать SDK из самого экземпляра, если вы можете получить идентификатор экземпляра. Вы запрашиваете обращение ec2 и передаете идентификатор экземпляра ec2. Используя ruby ​​sdk, он будет выглядеть так:

i = ec2.instances["i-12345678"]
puts i.dns_name

Ответ 3

Обнаружено, что описания-теги, не работающие в моей конфигурации, не удались с ошибкой "UnauthorizedOperation". Получил эту работу с описательными экземплярами:

aws ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text

Команда, использующая область и ключи доступа из текущего пользовательского конфигурационного файла aws [по умолчанию]: ~/.aws/config. Если вам нужно использовать другой пользовательский регион/ключи (можно найти на панели управления IMS консоли IMS), вы можете добавить их в другой раздел в этом файле, например [user2], и использовать их в команде следующим образом:

aws --profile user2 ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text