มีวิธีรับที่อยู่ DNS สาธารณะของอินสแตนซ์หรือไม่


18

ฉันมีโครงการที่ฉันต้องการอัปเดตไฟล์การกำหนดค่าทุกครั้งที่ EC2 อินสแตนซ์ถูกบู๊ตด้วยที่อยู่ DNS สาธารณะของอินสแตนซ์ปัจจุบัน ฉันจะใช้ Perl หรือ Sed สำหรับเรื่องนี้ดังนั้นจึงไม่ใช่คำถาม แต่คำถามจริงคือ: มีวิธีที่ฉันสามารถกำหนดที่อยู่ DNS สาธารณะของอินสแตนซ์หรือไม่ มี EC2 api ที่ฉันสามารถเข้าถึงได้จากอินสแตนซ์เพื่อตรวจสอบหรือไม่

คำตอบ:


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- API ของ Amazon Amazon EC2--กรณี /


1
PUBLIC_HOSTNAME="$(curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null)":) คุณครับเป็นโลหะ
Naftuli Kay

ดีใจที่ได้ช่วย :)
Tim Kennedy

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.