EC2インスタンス内からインスタンスタイプを確認する
はじめに
こんにちは、kkです。
AWS EC2のサーバ内から、インスタンスタイプを
確認する方法をご存知でしょうか。
わざわざコントロールパネルにログインせずとも、
コマンドでも確認が可能なので、今回はそちらをご紹介します。
なおインスタンスタイプだけでなく、インスタンスIDやセキュリティグループなんかも
確認が可能ですので是非ご活用ください!
確認方法
確認方法は下記のURLへサーバ内からアクセスだけです。
http://169.254.169.254/latest/meta-data/
「169.254.169.254」はリンクローカルアドレスとなっています。
詳細は下記をご参照ください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/using-instance-addressing.html#link-local-addresses
それでは実際にデータを確認していきましょう。
実際にアクセスしてみる
それでは実際にアクセスしてデータを確認していきましょう。
$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
system
上記が対象のURLにアクセスすることで確認が可能なデータになります。
それではインスタンスタイプを確認してみましょう。
$ curl http://169.254.169.254/latest/meta-data/instance-type
t2.micro
問題なくデータを取得することができました。
今回実行したサーバのインスタンスタイプは「t2.micro」ということがわかりますね。
同じ要領で、他のデータも取得が可能なのでぜひ各自の環境で試してください!
401が出力される場合は?
環境によっては下記のような状況になる場合があります。
$ curl http://169.254.169.254/latest/meta-data/
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>
<body>
<h1>401 - Unauthorized</h1>
</body>
</html>
これはインスタンス作成時にメタデータのバージョンを、
「V2のみ(トークンは必須)」と選択している場合に発生します。
上記の指定をしてしまっていると、一時的にトークンを発行したうえで
メタデータを取得しなければなりません。
それではトークンを一時的に発行して、データを取得していきましょう。
$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 56 100 56 0 0 5062 0 --:--:-- --:--:-- --:--:-- 5600
トークンを一時的に発行するコマンドを実行し、結果を「TOKEN」変数に格納します。
中身を見てみます。
$ echo $TOKEN
AQAAAOPfQQ8y2ALF6vmeSib-DEyXxW-hQynD1dUp1KtXA1_ho21dcw==
それではこちらのトークンを利用して情報を取得します。
$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -S http://169.254.169.254/latest/meta-data/security-groups
test-sg
問題なく取得ができました。
ここではセキュリティグループについて確認しているので、test-sgという
セキュリティグループに所属していることがわかりますね。
なお上記は公式マニュアルに記載があるので、ご参照ください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html
おわりに
いかがだったでしょうか。
今回はEC2インスタンス内から、様々なデータを取得する方法を紹介しました。
ログインしているサーバに誤りがないかどうかや、そもそもコントロールパネルへの
ログインが面倒といった場合にご活用ください。
それではまた