C'è un modo per ottenere l'indirizzo DNS pubblico di un'istanza?


18

Ho un progetto in cui devo aggiornare i file di configurazione ogni volta che un'istanza EC2 viene avviata con l'indirizzo DNS pubblico dell'istanza corrente. Userò Perl o Sed per questo, quindi non è proprio la domanda, ma la vera domanda è: esiste un modo per determinare l'indirizzo DNS pubblico dell'istanza? Esiste un API EC2 a cui posso accedere dall'istanza per determinarlo?

Risposte:


27

C'è. Dall'interno dell'istanza, puoi eseguire:

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

Per ottenere il nome host DNS pubblico, è possibile modificarlo in:

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

Puoi anche ottenere l'IP privato per l'istanza:

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

Come nota a margine, puoi ricontrollarlo su un sito non AWS su Internet, come http://ip4.me

#!/bin/bash

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

echo $pubip

Funzionerà, in generale, per controllare l '"IP pubblico" di qualsiasi sistema NAT o per trovare il tuo IP di proxy pubblico, ecc.

Ed ecco un buon link per leggere i tipi di informazioni che puoi ottenere dall'API di 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)":) Signore, siete in metallo.
Naftuli Kay,

felice di aiutare :)
Tim Kennedy,

2

Definisco questa funzione all'interno del mio .bashrc per recuperare l'ip pubblico e il 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

Puoi installare e configurare l' interfaccia della riga diaws configure comando di AWS ( ) e utilizzare il comando seguente:

aws ec2 describe-instances --instance-id i-0xyz --query 'Reservations[].Instances[].PublicDnsName' --output text
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.