Ответы, которые я нашел до сих пор (например, Узнать публичный IP-адрес сервера EC2) предлагаем использовать wget
или curl
чтобы добраться до сервера.
Они бесполезны для меня, потому что мои экземпляры ec2 недоступны напрямую из Интернета.
я пытался
aws ec2 --profile prod describe-instances --filters Name=instance-id,Values=i-00914683ababcba7eb1
Но в возвращенном результате JSON нет информации об IP-адресах.
Какую команду aws cli я могу использовать для получения этой информации?
Обычно это можно сделать с помощью --query filter.
Если вам нужен только частный IP-адрес:
aws --region YOUR-AWS-REGION \
ec2 describe-instances \
--filters \
"Name=instance-state-name,Values=running" \
"Name=instance-id,Values=i-00914683ababcba7eb1" \
--query 'Reservations[*].Instances[*].[PrivateIpAddress]' \
--output text
Если вам нужен только публичный IP-адрес:
aws --region YOUR-AWS-REGION \
ec2 describe-instances \
--filters \
"Name=instance-state-name,Values=running" \
"Name=instance-id,Values=i-00914683ababcba7eb1" \
--query 'Reservations[*].Instances[*].[PublicIpAddress]' \
--output text
Или вы можете иметь оба:
aws --region YOUR-AWS-REGION \
ec2 describe-instances \
--filters \
"Name=instance-state-name,Values=running" \
"Name=instance-id,Values=i-00914683ababcba7eb1" \
--query 'Reservations[*].Instances[*].[PrivateIpAddress, PublicIpAddress]' \
--output text
Конечно, вы также можете получить вывод в формате json. Просто измени --output text
к --output json
Оказывается, я могу это сделать
aws ec2 --profile prod describe-instances --filters Name=instance-id,Values=i-0f47d09e1d9659981 | jq ".Reservations[0].Instances[0].NetworkInterfaces[0].PrivateIpAddress"
и он вернется
10.0.9.7
Моя команда в вопросе не удалась, потому что по чистой случайности этот экземпляр был отключен. Так было NetworkInterfaces
раздел в результате.