Amazon EC2で起動した仮想サーバ(インスタンス)では、サーバの内部から、そのサーバ自身の各種メタデータ(MetaData)を取得することが出来ます。
自前でAMIをカスタマイズする際、インスタンスの起動時に割り振られる(確定する)データ(例えば、IPアドレスとかインスタンスIDとか。)については、事前に扱いを決めることは難しいかと思います。
例えば、インスタンスIDをサーバ自身が判別できることで、サーバ起動のタイミングや、サーバ稼働中に、Amazon EBSボリュームを(自動で)自分自身に割り当てられたり等もできたりします。
また、余談ですが、Amazon EC2では、ユーザがインスタンスの起動時に任意のデータ(UserData)をインスタンスに渡すことができ、そのデータをインスタンスの中で扱うことも可能です。
この場合も、以下で紹介するやり方で、メタデータだけではなく、ユーザデータも同様に取得することが可能です。(詳しい利用方法については別途)
メタデータ(ユーザデータ)の取得
データの取得は、サーバ内部からWeb経由(HTTP)で取得します。これはAmazon EC2が独自で持つRESTのAPIで、サーバから"169.254.169.254"へHTTPのGETメソッドでアクセスすることで取得できます。
Amazon EC2の仮想サーバのコマンドラインから、以下の要領で取得してみてください。
# curl http://169.254.169.254/latest/
dynamic
meta-data
user-data
この中で、"meta-deta"がメタデータ、"user-data"がユーザデータとなります。
# curl http://169.254.169.254/latest/user-data/
で、ユーザがインスタンスの起動時に定義した(渡した)データを取得できます。
# curl http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path ancestor-ami-ids block-device-mapping/ hostname instance-action instance-id instance-type kernel-id local-hostname local-ipv4 placement/ public-hostname public-ipv4 public-keys/ ramdisk-id reservation-id
では、本題のメタデータの方を紹介。
取得できるパラメータは上記の通り、たくさんあります。
以下の要領で、続けてパラメータ名をつけていくことで、何かしらの値が取得できることになります。いくつか取得できる値を紹介します。
(一部、public-keysなどは、指定方法が少し違うため、以下を参照して下さい。)
# curl http://169.254.169.254/latest/meta-data/ami-id
ami-810657c4
AMIのID。
# curl http://169.254.169.254/latest/meta-data/instance-id i-02688446
インスタンスのID。
# curl http://169.254.169.254/latest/meta-data/instance-type
m1.small
サーバのインスタンスタイプ。
# curl http://169.254.169.254/latest/meta-data/local-hostname ip-10-162-154-117.us-west-1.compute.internal
サーバのホスト名(hostbame)。
# curl http://169.254.169.254/latest/meta-data/local-ipv4
10.162.154.117
サーバのプライベートIPアドレス。
# curl http://169.254.169.254/latest/meta-data/placement/availability-zone
us-west-1a
サーバの起動しているゾーン名(Availability Zone)。
# curl http://169.254.169.254/latest/meta-data/public-hostname ec2-204-236-190-25.us-west-1.compute.amazonaws.com
サーバのパブリックDNSネーム。
# curl http://169.254.169.254/latest/meta-data/public-ipv4
204.236.190.25
サーバのパブリックIPアドレス。
# curl http://169.254.169.254/latest/meta-data/security-groups
default
サーバの所属しているセキュリティグループ。
# curl http://169.254.169.254/latest/meta-data/block-device-mapping/ ami ephemeral0 root swap # curl http://169.254.169.254/latest/meta-data/block-device-mapping/ami sda1 # curl http://169.254.169.254/latest/meta-data/block-device-mapping/root /dev/sda1 # curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0 sda2 # curl http://169.254.169.254/latest/meta-data/block-device-mapping/swap sda3
サーバに接続されているディスクデバイス。
# curl http://169.254.169.254/latest/meta-data/public-keys/ 0=test_key # curl http://169.254.169.254/latest/meta-data/public-keys/0/ openssh-key # curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa AAAAB3NzaC1yc2EAAAAD.....(省略)..... test_key
KeyPairsで指定した、サーバに接続する際の公開鍵。
"0=test_key"などは、"0"を指定し取得したパラメータを上記のようにあわせて(/0/openssh-key)指定します。
まとめ
クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)
- 作者: 並河祐貴,安達輝雄,ITpro/日経SYSTEMS
- 出版社/メーカー: 日経BP社
- 発売日: 2009/11/05
- メディア: 単行本
- 購入: 4人 クリック: 372回
- この商品を含むブログ (18件) を見る