35

I'm trying to set up a means to register an instance in route53 automatically when the instance is created, using salt and this article.

The article uses ec2-metadata to get the instance-id and and the hostname. I'm wondering if there is a way, using bash within the instance, to get the instance Name instead. ec2-metadata only seems to show the instance-id. Thanks in advance.

4

5 に答える 5

20

何よりもまず、Amazon EC2 インスタンス メタデータ サービスは、以外にもかなりの数の名前instance-idを提供します。これらが探しているものである場合は、インスタンス メタデータ カテゴリを参照してください。

  • hostname-インスタンスのプライベート ホスト名。複数のネットワーク インターフェイスが存在する場合、これは eth0 デバイス (デバイス番号が 0 のデバイス) を指します。
  • local-hostname-インスタンスのプライベート DNS ホスト名。複数のネットワーク インターフェイスが存在する場合、これは eth0 デバイス (デバイス番号が 0 のデバイス) を指します。
  • public-hostname-インスタンスのパブリック DNS。インスタンスが VPC にある場合、このカテゴリは、enableDnsHostnames 属性が true に設定されている場合にのみ返されます。

ただし、 AWS マネジメント コンソールで公開されている名前を探している場合は、Amazon Web Servicesのツールの 1 つを使用して取得する必要があります。その名前は、実際にはキーNameを持つ通常のタグです( Amazon EC2 リソースのタグ付けを参照してください)。これは、明らかな目的でほとんどの AWS サービスで使用されています。

たとえば、 AWS Command Line Interfaceを使用して取得する方法は次のとおりです (リージョンと資格情報をスキップします)。

aws ec2 describe-tags \
--filters Name=resource-id,Values=i-abcd1234 Name=key,Values=Name \
--query Tags[].Value --output text
于 2013-08-20T22:31:05.397 に答える
0

bash でどのようになるかはわかりませんが、インスタンス ID を取得できれば、インスタンス自体から SDK を使用できます。ec2 リソースをクエリして、ec2 インスタンス ID を渡します。Ruby SDK を使用すると、次のようになります。

i = ec2.instances["i-12345678"]
puts i.dns_name
于 2013-08-20T15:31:44.270 に答える
-1

私の設定で記述タグが機能していないことがわかり、「UnauthorizedOperation」エラーで失敗しました。これはdescribe-instancesで動作します:

aws ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text

現在のユーザーの aws 構成ファイルの [default] セクションからリージョンとアクセス キーを使用するコマンド: ~/.aws/config 。別のユーザーのリージョン/キー (AWS コンソールの IAM ダッシュボードで見つけることができます) を使用する必要がある場合は、それらをそのファイルの別のセクション ([user2] など) に追加し、次のようなコマンドで使用できます。

aws --profile user2 ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text
于 2016-08-10T11:55:20.377 に答える