인스턴스의 퍼블릭 DNS 주소를 얻을 수 있는 방법이 있습니까?

인스턴스의 퍼블릭 DNS 주소를 얻을 수 있는 방법이 있습니까?

현재 인스턴스의 퍼블릭 DNS 주소를 사용하여 EC2 인스턴스를 시작할 때마다 구성 파일을 업데이트해야 하는 프로젝트가 있습니다. 나는 이를 위해 Perl이나 Sed를 사용할 것이므로 실제로는 질문이 아니지만 실제 질문은 다음과 같습니다. 인스턴스의 공개 DNS 주소를 확인할 수 있는 방법이 있습니까? 이를 확인하기 위해 인스턴스에서 액세스할 수 있는 EC2 API가 있습니까?

답변1

가지다. 인스턴스 내부에서 다음을 실행할 수 있습니다.

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

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

다음은 Amazon API에서 얻을 수 있는 정보 유형을 이해하는 데 도움이 되는 좋은 링크입니다. http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your-amazon-ec2-instances/

답변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
}

답변3

설치하고 구성할 수 있습니다.AWS CLI( aws configure) 다음 명령을 사용하십시오.

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

답변4

그러면 레이블별로 DNS 이름이 표시됩니다.

aws ec2 describe-instances --region us-east-2 --max-items 1 --filters "Name=tag:Name,Values=MyNameTag" --query 'Reservations[].Instances[].PublicDnsName' --output text

관련 정보