인스턴스의 퍼블릭 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

참고로, http://ip4.me 와 같이 인터넷에있는 비 AWS 사이트에 대해 다시 확인할 수 있습니다.

#!/bin/bash

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

echo $pubip

일반적으로 NAT 시스템의 "공개 IP"를 확인하거나 공용 프록시 IP 등을 찾는 데 효과적입니다.

다음은 Amazon API에서 얻을 수있는 정보 유형을 읽을 수있는 좋은 링크입니다. http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your- 아마존 -EC2- 인스턴스 /


1
PUBLIC_HOSTNAME="$(curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null)":) 당신은 금속입니다.
Naftuli Kay

기꺼이 도와 :)
팀 케네디

2

공개 IP 및 DNS를 검색하기 위해 .bashrc 내에이 함수를 정의합니다.

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.