Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

こないだ、ドキュメント: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 に含まれています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away