テックブログ

EC2インスタンス内からインスタンスタイプを確認する

はじめに

こんにちは、kkです。
AWS EC2のサーバ内から、インスタンスタイプを
確認する方法をご存知でしょうか。

わざわざコントロールパネルにログインせずとも、
コマンドでも確認が可能なので、今回はそちらをご紹介します。

なおインスタンスタイプだけでなく、インスタンスIDやセキュリティグループなんかも
確認が可能ですので是非ご活用ください!

確認方法

確認方法は下記のURLへサーバ内からアクセスだけです。

「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インスタンス内から、様々なデータを取得する方法を紹介しました。

ログインしているサーバに誤りがないかどうかや、そもそもコントロールパネルへの
ログインが面倒といった場合にご活用ください。

それではまた

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください