Чи є спосіб отримати загальнодоступну DNS-адресу екземпляра?


18

У мене є проект, в якому мені потрібно оновлювати файли конфігурації щоразу, коли екземпляр EC2 завантажується із загальнодоступною DNS-адресою поточного екземпляра. Я буду використовувати для цього Perl або Sed, тому це насправді не питання, але справжнє питання: чи є спосіб я визначити загальнодоступну DNS-адресу екземпляра? Чи є api EC2, до якого я можу отримати доступ з екземпляра, щоб визначити його?

Відповіді:


27

Існує. Зсередини екземпляра можна запустити:

curl http://169.254.169.254/latest/meta-data/public-ipv4

Щоб отримати загальнодоступне ім’я DNS, ви можете змінити це на:

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

Ви також можете отримати приватний IP-адресу:

curl http://169.254.169.254/latest/meta-data/local-ipv4

Як бічну зауваження, ви можете двічі перевірити це на веб-сайті, що не є AWS, в Інтернеті, як-от http://ip4.me

#!/bin/bash

pubip=$( curl http://ip4.me 2>/dev/null | sed -e 's#<[^>]*>##g' | grep '^[0-9]' )

echo $pubip

Це, як правило, допоможе перевірити "загальнодоступний IP" будь-якої системи NATED або знайти ваш IP-адрес публічного проксі тощо.

Ось хороше посилання, щоб прочитати типи інформації, яку ви можете отримати від API Amazon: http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your- Amazon-ec2-екземпляри /


1
PUBLIC_HOSTNAME="$(curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null)":) Ви, пане, металеві.
Naftuli Kay

Рада допомогти :)
Тім Кеннеді

2

Я визначаю цю функцію в моєму .bashrc для отримання загальнодоступних ip та dns:

export PUBLIC_DNS=`curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null`
export PUBLIC_IP=`curl http://169.254.169.254/latest/meta-data/public-ipv4 2>/dev/null`

function get-pub() {
  if [ $# -ne 1 ]; then
    echo "Invalid number of arguments"
    return 1
  else
    case $1 in
      dns)
        echo $PUBLIC_DNS
        ;;
      ip)
        echo $PUBLIC_IP
        ;;
      *)
        echo $"Usage: get-pub {dns|ip}"
        return 2
    esac;
  fi
  return 0
}

1

Ви можете встановити та налаштувати AWS CLI ( aws configure) та використовувати таку команду:

aws ec2 describe-instances --instance-id i-0xyz --query 'Reservations[].Instances[].PublicDnsName' --output text
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.