こないだ、ドキュメントを何気なく眺めていたら、**EC2 Instance Metadata Query Tool (ec2-metadata)**なる存在を知りました。
2008年からあったみたいですが、いままで知りませんでした
で、このツールをさらっと触った感じ、いい感じだったので紹介します。
いままで
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
ですが、お手軽な反面、意外と使いづらいなぁと感じていました。
印象として
169.254.169.254はブラインドタッチしづらい
よくタイプミスする
目的の情報までのパスが長い
覚えきれない
1リクエストで1情報しかとれない
instance-idとinstance-type などまとめて確認したい時がある
で、これがec2-metadataを使うと、どう変わるのか見ていきます。
どうなるか?
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
目的の情報までのパスが長い
例えば、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
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
まとめ
ec2-metadata
を使うと、長いURLをタイプしなくても効率よく直感的にメタデータを参照することができます
AmazonLinuxならデフォルトで使えるので、すぐに使えるのもうれしいです。
こういう地味なことを積み上げて、作業効率を上げていけるといいですね
参考
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 に含まれています。