Czy istnieje sposób uzyskania publicznego adresu DNS wystąpienia?


18

Mam projekt, w którym muszę aktualizować pliki konfiguracyjne za każdym razem, gdy instancja EC2 jest uruchamiana przy użyciu publicznego adresu DNS bieżącej instancji. Użyję do tego Perla lub Seda, więc to nie jest tak naprawdę pytanie, ale prawdziwe pytanie brzmi: czy istnieje sposób, w jaki mogę określić publiczny adres DNS instancji? Czy istnieje interfejs API EC2, do którego mogę uzyskać dostęp z instancji, aby go określić?

Odpowiedzi:


27

Jest. Z poziomu instancji możesz uruchomić:

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

Aby uzyskać publiczną nazwę hosta DNS, możesz zmienić ją na:

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

Możesz również uzyskać prywatny adres IP dla instancji:

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

Na marginesie możesz sprawdzić to dwukrotnie w witrynie innej niż AWS w Internecie, takiej jak http://ip4.me

#!/bin/bash

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

echo $pubip

Działa to ogólnie w celu sprawdzenia „publicznego adresu IP” dowolnego systemu NATed lub znalezienia publicznego adresu IP serwera proxy itp.

Oto dobry link do informacji o rodzajach informacji, które można uzyskać z interfejsu API Amazon: http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your- amazon-ec2-instances /


1
PUBLIC_HOSTNAME="$(curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null)":) Pan jest metalem.
Naftuli Kay 11.11.11

miło mi pomóc :)
Tim Kennedy

2

Definiuję tę funkcję w moim pliku .bashrc, aby pobrać publiczne adresy IP i 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

Możesz zainstalować i skonfigurować AWS CLI ( aws configure) i użyć następującego polecenia:

aws ec2 describe-instances --instance-id i-0xyz --query 'Reservations[].Instances[].PublicDnsName' --output text
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.