はじめに
「169.254.169.254って何?」「EC2の説明でよく出てくるけど、何に使うの?」と、画面を見ながら手が止まっていませんか。
AWSを使い始めると、このIPアドレスを何度も見かけますが、数字だけでは役割が分かりにくいですよね。
実は「169.254.169.254」は、EC2インスタンスが自分自身の情報を取得するときに使う、特別な入口です。たとえば、インスタンスIDやIAMロールの認証情報などを確認するときに使われます。
この記事では、「169.254.169.254」の正体と役割を、EC2メタデータの基本とあわせてやさしく整理していきます。なぜ必要なのか、どんな場面で使うのかを、順を追って説明していきます。
「169.254.169.254」とは?

「169.254.169.254」は、AWSのEC2インスタンス内からアクセスできる特別なIPアドレスで、インスタンス自身に関するさまざまな情報(メタデータ)を取得するために利用されます。
この仕組みを理解することで、インスタンスの識別情報や設定内容をプログラムから動的に参照できるようになります。では、具体的にどのような情報が取得できるのか見ていきましょう。
EC2のメタデータを取得するための特別なIP
「169.254.169.254」は、Amazon EC2インスタンス内からインスタンスメタデータにアクセスするために予約されたリンクローカルIPアドレスです。
このIPはインターネット経由では到達できず、同一インスタンスのOSからHTTPリクエストを送信した場合にのみ応答し、http://169.254.169.254/latest/meta-data/のようなパスでインスタンスIDやIAMロール認証情報などの値をキー単位で取得できます。
リクエストはポート80に対するローカル通信として処理され、外部ネットワーク設定やルーティングに依存せず、インスタンス起動直後から利用できます。
これにより、実行中のプロセスが自身の環境情報を取得できるようになります。
取得できる情報
「169.254.169.254」に対して/latest/meta-data/配下へHTTP GETを送信すると、インスタンスIDはinstance-idキーで1件の文字列として返され、IAMロールはiam/security-credentials/配下にロール名が1件のディレクトリとして列挙され、そのロール名を指定して再度GETするとAccessKeyId、SecretAccessKey、Token、Expirationの4項目がJSON形式で返されます。
これにより、インスタンス内のプロセスは自身の識別子を1値で取得し、認証情報を4つの具体的な値として受け取れます。
「169.254.169.254」の使い方|EC2からメタデータを取得する最小手順

ここでは、「169.254.169.254」を使ってEC2のメタデータを実際に取得する方法を、最小限の手順で確認していきます。
基本的な動作を理解するために、まずはシンプルなコマンドを使った確認方法から見ていきましょう。
curlコマンドでインスタンスIDを確認する
まずは、EC2にログインした状態で、インスタンスIDが取得できるかを確認します。最近のEC2ではIMDSv2が有効になっていることが多いため、最初にトークンを取得し、そのトークンを付けて「169.254.169.254」へアクセスします。
TOKEN=$(curl -X PUT “http://169.254.169.254/latest/api/token” \
-H “X-aws-ec2-metadata-token-ttl-seconds: 21600”)
curl -H “X-aws-ec2-metadata-token: $TOKEN” \
http://169.254.169.254/latest/meta-data/instance-id
実行すると、i-0123456789abcdef0 のようなインスタンスIDが1行で表示されます。
これは、自分が今ログインしているEC2の識別番号です。IMDSv2が必須の環境では、トークンなしで実行すると 401 Unauthorized になることがあります。
IAMロールやリージョン情報を取得する
インスタンスIDが取得できたら、同じ方法でIAMロールやリージョン情報も確認できます。IAMロール名は次のコマンドで取得できます。
curl -H “X-aws-ec2-metadata-token: $TOKEN” \
http://169.254.169.254/latest/meta-data/iam/security-credentials/
MyEc2Role のようなロール名が表示されたら、その名前を末尾に付けて再度アクセスします。
curl -H “X-aws-ec2-metadata-token: $TOKEN” \
http://169.254.169.254/latest/meta-data/iam/security-credentials/MyEc2Role
すると、AccessKeyId、SecretAccessKey、Token、Expiration がJSON形式で表示されます。
これらは、そのEC2に割り当てられたIAMロールの一時的な認証情報です。
「169.254.169.254」を使うときの注意点

ここでは補足として、「169.254.169.254」の基本的な性質について最低限押さえておきたいポイントを解説します。特に、このIPアドレスがどのような位置づけのものなのかを理解しておくことで、誤解を防ぐことができます。
通常のインターネットIPではなくEC2内部だけで使われる
「169.254.169.254」は、WebサイトやAPIのようにインターネット経由でアクセスするIPアドレスではありません。
EC2インスタンスの中からだけ使える特別なアドレスで、AWSがそのインスタンス専用に用意している「メタデータ用の窓口」です。
そのため、EC2のターミナル上で curl http://169.254.169.254/... を実行すると応答がありますが、自分のパソコンや別のEC2、別サーバーから同じIPにアクセスしても何も返ってきません。
「169.254.169.254」は、ルーターやインターネットを経由して届くアドレスではなく、インスタンス内部だけで処理される「リンクローカルアドレス」として動作しているためです。
つまり、このIPにアクセスできるのは「そのEC2自身」だけであり、通信は常にインスタンス内部で完結します。外部に公開されることはなく、通常のインターネットIPとは役割がまったく異なります。
まとめ
「169.254.169.254」は、AWSのEC2インスタンス内からのみアクセスできる特別なIPアドレスであり、インスタンス自身に関する情報(メタデータ)を取得するための仕組みです。
これはインターネット上に存在するサーバーではなく、インスタンス内部に用意された“専用の入口”のようなもので、実行中のプログラムが自分の環境情報を動的に取得するために利用されます。
このIPアドレスを通じて、インスタンスIDやIAMロールの認証情報などをHTTPリクエストで簡単に取得することができます。
特にIAMロールの一時的な認証情報を取得できる点は重要で、安全にAWSリソースへアクセスする仕組みとして広く活用されています。
また、「169.254.169.254」はリンクローカルアドレスであり、外部ネットワークや他のインスタンスからアクセスすることはできません。通信は常にインスタンス内部で完結するため、セキュアに情報を扱うことができます。
つまり、「169.254.169.254」とは「EC2インスタンスが自分自身の情報を取得するための内部API」であり、AWSを扱う上で基本となる重要な仕組みのひとつです。











