Получение IP-адреса экземпляра EC2 по идентификатору экземпляра
С использованием aws CLI
Как я могу получить частный IP-адрес экземпляра EC2, учитывая его instanceID?
Когда я делаю:
aws ec2 describe-instance-status --instance-ids <instance_ID>
Я получаю другую информацию, но не частные IP-адреса, такие как:
{
"InstanceStatuses": [
{
"InstanceId": "XXXXX",
"InstanceState": {
"Code": 16,
"Name": "running"
},
"AvailabilityZone": "us-east-1a",
"SystemStatus": {
"Status": "ok",
"Details": [
{
"Status": "passed",
"Name": "reachability"
}
]
},
"InstanceStatus": {
"Status": "ok",
"Details": [
{
"Status": "passed",
"Name": "reachability"
}
]
}
}
]
}
2 ответа
Решение
Пытаться describe-instances
вместо. Частный IP-адрес не возвращается с описанием-экземпляром-статусом, потому что эта команда описывает состояние системы и экземпляра, в первую очередь касающееся оборудования / проблем или запланированных событий.
Согласно разделу "Вывод" документации описаний экземпляров, часть вывода описаний экземпляров представляет собой строку PrivateIpAddress
,
Пример использования:
aws ec2 describe-instances --instance-ids <instance_ID>
Чтобы получить ВСЕ частные IP-адреса:
aws ec2 describe-instances --instance-ids ${INSTANCE_ID} |\
jq -r '.Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddress'
или же
aws ec2 describe-instances --instance-ids ${INSTANCE_ID} |\
jq -r ".Reservations[]" | grep PrivateIpAddress |\
egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort -u
Вы можете сделать это, используя опцию запроса.
aws ec2 describe-instances --instance-ids ${INSTANCE_ID} --query Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddress
Это просто вернет частный IP-адрес и никакой другой выходной информации