Amazon EC2インスタンスの自身のMetadataを簡単に取得する

Amazon EC2のメタデータを簡単に取得する方法

Amazon EC2はたくさんのメタデータを持っています。SDKやAPIを経由して取得する方法が一般的ですが、自身のインスタンス内で簡単に問い合わせる方法があります。以下のアドレスにアクセスすることです。

http://169.254.169.254/

実際にどんな情報が取得できるのか試してみたいと思います。

$ wget -q -O - http://169.254.169.254/
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
latest

取得したファイルの中身はテキストの羅列です。

トップレベルのMetadataを表示する

$ wget -q -O - http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
kernel-id
local-hostname
local-ipv4
mac
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups

このMetadata文字列を付加して実行してみます。

$ wget -q -O - http://169.254.169.254/latest/meta-data/ami-id
ami-300caa31
$ wget -q -O - http://169.254.169.254/latest/meta-data/hostname
ip-10-146-159-226.ap-northeast-1.compute.internal
$ wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
i-84350986
$ wget -q -O - http://169.254.169.254/latest/meta-data/mac
12:31:50:00:38:12
$ wget -q -O - http://169.254.169.254/latest/meta-data/public-ipv4
175.41.196.159
$ wget -q -O - http://169.254.169.254/latest/meta-data/local-ipv4
10.146.59.229

まとめ

Amazon EC2で起動したインスタンス自身の情報を取得するためには、魔法のアドレスにアクセスすれば良い事が分かりました。これは、外部からのアクセスでは取得できません。使いどころは、たとえばcronで定期的に情報をチェックして外部に報告するとかが考えられます。具体的には、CloudWatchのカスタムメトリクスを作成する場合です。ということで、自身のMetadataを知って上に報告しましょう!