Existe uma maneira de obter o endereço DNS público de uma instância?

18

Eu tenho um projeto no qual preciso atualizar os arquivos de configuração sempre que uma instância do EC2 é inicializada com o endereço DNS público da instância atual. Eu usarei Perl ou Sed para isso, então essa não é a pergunta, mas a verdadeira questão é: existe uma maneira de determinar o endereço DNS público da instância? Existe uma API do EC2 que eu possa acessar a partir da instância para determiná-la?

    
por Naftuli Kay 11.11.2011 / 03:44

3 respostas

26

Existe. De dentro da instância, você pode executar:

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

Para obter o nome de host DNS público, você pode alterá-lo para:

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

Você também pode obter o IP privado da instância:

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

Como observação, você pode verificar isso em um site que não seja da AWS na Internet, como o link

#!/bin/bash

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

echo $pubip

Isso funcionará, geralmente, para verificar o "IP público" de qualquer sistema NAT, ou para encontrar seu IP de proxy público, etc.

E aqui está um bom link para ler os tipos de informações que você pode obter da API da Amazon: link

    
por 11.11.2011 / 04:18
2

Eu defino essa função dentro do meu .bashrc para recuperar o ip e o dns públicos:

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
}
    
por 24.07.2015 / 00:13
1

Você pode instalar e configurar a AWS CLI ( aws configure ) e usar o seguinte comando:

aws ec2 describe-instances --instance-id i-0xyz --query 'Reservations[].Instances[].PublicDnsName' --output text
    
por 07.02.2018 / 21:57