Apakah ada cara untuk mendapatkan alamat DNS Publik dari sebuah instance?

18

Saya memiliki proyek di mana saya perlu memperbarui file konfigurasi setiap kali instance EC2 di-boot dengan alamat DNS Publik dari instance saat ini. Saya akan menggunakan Perl atau Sed untuk ini, jadi itu bukan pertanyaan, tetapi pertanyaan sebenarnya adalah: apakah ada cara saya bisa menentukan alamat DNS publik instance? Apakah ada api EC2 yang dapat saya akses dari instance untuk menentukannya?

Naftuli Kay
sumber

Jawaban:

27

Ada. Dari dalam instance, Anda dapat menjalankan:

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

Untuk mendapatkan nama host DNS publik, Anda dapat mengubahnya menjadi:

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

Anda bisa mendapatkan IP pribadi sebagai contoh, juga:

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

Sebagai catatan tambahan, Anda dapat mengeceknya terhadap situs non-AWS di internet, seperti http://ip4.me

#!/bin/bash

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

echo $pubip

Itu akan bekerja, umumnya, untuk memeriksa "IP publik" dari sistem NATed apa pun, atau untuk menemukan IP proxy publik Anda, dll.

Dan inilah tautan yang bagus untuk membaca tentang jenis-jenis informasi yang bisa Anda dapatkan dari API Amazon: http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your- amazon-ec2-instance /

Tim Kennedy
sumber
1
PUBLIC_HOSTNAME="$(curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null)":) Anda, tuan, adalah logam.
Naftuli Kay
senang untuk membantu :)
Tim Kennedy
2

Saya mendefinisikan fungsi ini di dalam .bashrc saya untuk mengambil ip publik dan 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
}
y0n1
sumber
1

Anda dapat menginstal dan mengkonfigurasi AWS CLI ( aws configure) dan menggunakan perintah berikut:

aws ec2 describe-instances --instance-id i-0xyz --query 'Reservations[].Instances[].PublicDnsName' --output text
kenorb
sumber