13
11

More than 5 years have passed since last update.

EC2インスタンスのmetadataを効率よく直感的に参照する

Posted at

こないだ、ドキュメント:page_facing_up:を何気なく眺めていたら、EC2 Instance Metadata Query Tool (ec2-metadata)なる存在を知りました。

2008年からあったみたいですが、いままで知りませんでした:sweat_smile:

で、このツールをさらっと触った感じ、いい感じ:grinning:だったので紹介します。

:thinking:いままで

EC2インスタンスのメタデータを取りたい時は、いつもリンクローカルアドレス(169.254.169.254)に対してhttpリクエストを出して情報を取得していました。

こんな感じですね。

[ec2-user@ip-172-20-21-62 ~]$ curl http://169.254.169.254/latest/meta-data/ami-id
ami-0c11b26d

ですが、お手軽な反面、意外と使いづらいなぁと感じていました。

印象として

:one: 169.254.169.254はブラインドタッチしづらい
:point_right: よくタイプミスする

:two: 目的の情報までのパスが長い
:point_right: 覚えきれない

:three: 1リクエストで1情報しかとれない
:point_right: instance-idとinstance-type などまとめて確認したい時がある

で、これがec2-metadataを使うと、どう変わるのか見ていきます。

:slight_smile:どうなるか?

:one: 169.254.169.254はブラインドタッチしづらい

いままでタイプしていたhttp://169.254.169.254/latest/meta-data/に比べて、ec2-metadataだけで良いので、かなりタイプミスが減ります

更に、AmazonLinuxであれば、最初からインストール(※)されておりパスが通っていますので、タブの補完が効きます。

ec2-meくらいまでTabをタイプすれば補完されるので、すごい楽。

[ec2-user@ip-172-20-21-62 ~]$ uname -a
Linux ip-172-20-21-62 4.4.23-31.54.amzn1.x86_64 #1 SMP Tue Oct 18 22:02:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[ec2-user@ip-172-20-21-62 ~]$ type -p ec2-metadata
/opt/aws/bin/ec2-metadata

:two: 目的の情報までのパスが長い

例えば、block-device-mappingの例で見ると、

[ec2-user@ip-172-20-21-62 ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/ami/
/dev/xvda

↑の長いURLが、こうなります。短いオプションをつけるだけ!簡単!

[ec2-user@ip-172-20-21-62 ~]$ ec2-metadata -b
block-device-mapping:
     ami: /dev/xvda
     root: /dev/xvda

オプションも直感的なので使いやすいです。
どんなオプションが使えるのかはec2-metadata --helpで確認できます。

自分の場合、頻度が高いのは、-t-i だったりします。

[ec2-user@ip-172-20-21-62 ~]$ ec2-metadata -t
instance-type: t2.micro
[ec2-user@ip-172-20-21-62 ~]$ ec2-metadata -i
instance-id: i-1a804e94

:three: 1リクエストで1情報しかとれない

ec2-metadataとタイプすれば、いつも確認するような情報がまとめて確認できます。これくらいの情報が何のオプションも付けずに確認できるので、必要十分ですね。

[ec2-user@ip-172-20-21-62 ~]$ ec2-metadata
ami-id: ami-0c11b26d
ami-launch-index: 0
ami-manifest-path: (unknown)
ancestor-ami-ids: not available
block-device-mapping:
     ami: /dev/xvda
     root: /dev/xvda
instance-id: i-1a804e94
instance-type: t2.micro
local-hostname: ip-172-20-21-62.ap-northeast-1.compute.internal
local-ipv4: 172.20.21.62
kernel-id: not available
placement: ap-northeast-1c
product-codes: not available
public-hostname: not available
public-ipv4: not available
public-keys:
keyname:your-keyname
index:0
format:openssh-key
key:(begins from next line)
ssh-rsa AAAA***** your-keyname
ramdisk-id: not available
reservation-id: r-3dee40b2
security-groups: your-security-groups
user-data: not available

:raised_hand:まとめ

ec2-metadataを使うと、長いURLをタイプしなくても効率よく直感的にメタデータを参照することができます:muscle:

AmazonLinuxならデフォルトで使えるので、すぐに使えるのもうれしいです。

こういう地味なことを積み上げて、作業効率を上げていけるといいですね:grinning:


参考

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
https://aws.amazon.com/code/1825

備考

  • ec2-utils-0.5-1.28.amzn1.noarch に含まれています。
13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11