インスタンスのパブリックDNSアドレスを取得する方法はありますか?


18

現在のインスタンスのパブリックDNSアドレスでEC2インスタンスが起動されるたびに構成ファイルを更新する必要があるプロジェクトがあります。これには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- amazon-ec2-instances /


1
PUBLIC_HOSTNAME="$(curl http://169.254.169.254/latest/meta-data/public-hostname 2>/dev/null)":)あなた、先生、金属です。
ナフトゥリケイ

助けてうれしい:)
ティムケネディ

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 CLIaws 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.