Получить общедоступное имя dns экземпляра ec2 с помощью средств командной строки ec2 в bash

У меня есть имя экземпляра ec2 и вы хотите сделать ssh. Как я могу определить "Public DNS" экземпляра ec2, используя имя экземпляра ec2.

Я хочу сделать это с помощью bash.

Ответ 1

aws ec2 describe-instances --instance-ids i-12abc34 --query 'Reservations[].Instances[].PublicDnsName'

Где i-12abc34 - ваш идентификатор экземпляра

Ответ 2

Использование инструментов API EC2:

# Region is only needed if not in us-east-1
$ ec2-describe-instances --region <region> <instance id> 

Используя единый инструмент AWS CLI:

$ aws --region <region> ec2 describe-instances --instance-ids <instance id≥

Я предпочитаю унифицированный инструмент, поскольку он предлагает исчерпывающие и согласованные данные.

Ответ 3

Если вы установите инструмент cloud-utils, как описано в этом ответе, он будет намного более прямым вперед.

fooobar.com/questions/16232/...

ec2-metadata --public-ipv4
> public-ipv4: 54.200.4.52

Ответ 4

Это зависит от того, что вы подразумеваете под "вычислением". Если вы имеете в виду выяснить себя, вы не можете. Открытое DNS-имя не имеет ничего общего с именем экземпляра ec2. Общее DNS-имя состоит из общедоступного IP-адреса, региона/зоны доступности, типа сервиса, имени домена aws и т.д. Например, ec2-xx-xxx-x-xx.us-west-2.compute.amazonaws.com, Поскольку публичный IP-адрес изменяется каждый раз, когда вы останавливаете и запускаете свой экземпляр, если вы не используете эластичный IP-адрес, ваше общедоступное DNS-имя будет изменено.

Если вы имеете в виду выяснить, используя AWS API или инструмент CLI, вы можете. Используя CLI EC2, вы должны использовать команду ec2-describe-экземпляры instance_id. Опять же, экземпляр должен быть запущен, а публичный DNS изменяется после остановки/запуска.

Ответ 5

Вы можете запросить службу метаданных экземпляра.

Использование curl:

curl -s http://169.254.169.254/latest/meta-data/public-hostname

Использование wget:

wget -qO - http://169.254.169.254/latest/meta-data/public-hostname

Если смелый, фактический удар:

exec 3<> /dev/tcp/169.254.169.254/80
echo -e "GET /latest/meta-data/public-hostname HTTP/1.0\r\n\r\n" >&3
cat <&3

(Последнее оставляет соединение открытым для меня, поэтому cat застревает. Заголовки также присутствуют в выводе)

(Это от самого экземпляра и требует доступа к экземпляру - это не версия, связанная с именем экземпляра. Здесь достаточно ответов)