「169.254.169.254」とは?AWSでの役割を一発で理解する

目次

はじめに

「169.254.169.254って何?」
「EC2の説明でよく出てくるけど、何に使うの?」と、画面を見ながら迷っていませんか。

AWSを使い始めると、このIPアドレスを何度も見かけますが、数字だけでは役割が分かりにくいですよね。

この記事では、「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アドレスです。

インターネットから直接アクセスするものではなく、EC2インスタンス内からhttp://169.254.169.254/latest/meta-data/などへリクエストを送ることで、インスタンスIDやIAMロールに関する情報を取得できます。

そのため、EC2上で動作するアプリケーションが、自身のインスタンス情報を確認するときなどに利用されます。

取得できる情報

「169.254.169.254」からは、インスタンスIDをはじめ、ホスト名やネットワーク情報、IAMロールに関する情報などを取得できます。

IAMロールが設定されている場合は、ロール名を確認したうえで認証情報へアクセスでき、AccessKeyIdやSecretAccessKey、Token、Expirationなどの値を取得できます。

これらの情報を利用することで、EC2上のアプリケーションは必要なインスタンス情報や一時的な認証情報を取得できます。

「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 になることがあります。

IMDSv2のトークンが必要な理由や、IMDSv1との違いが気になった場合は、仕組みを確認しておくと理解しやすくなります。
▶EC2のIMDSv2とは?IMDSv1との違いと設定方法を解説

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ロールの一時的な認証情報です。 

IAMロールから取得した一時的な認証情報が、どのようにAWSサービスへのアクセスに使われるのか分からない場合は、IAMロールの仕組みも確認しておきましょう。
▶AWSのIAMロールとは?EC2での使い方と設定方法を解説

「169.254.169.254」を使うときの注意点

ここでは補足として、「169.254.169.254」の基本的な性質について最低限押さえておきたいポイントを解説します。

特に、このIPアドレスがどのような位置づけのものなのかを理解しておくことで、誤解を防ぐことができます。

通常のインターネットIPではなくEC2内部だけで使われる

「169.254.169.254」は、WebサイトやAPIのようにインターネット経由でアクセスするIPアドレスではなく、EC2インスタンスからメタデータを取得するための特別なアドレスです。

EC2のターミナルから curl http://169.254.169.254/... のようにアクセスすると、自分自身のインスタンスに関する情報を取得できます。

このIPは「リンクローカルアドレス」として扱われるため、インターネットを経由してアクセスするものではありません。

そのため、通常のWebサーバーのIPアドレスとは役割が異なり、EC2が自身のメタデータへアクセスするための専用の窓口と考えると分かりやすいでしょう。

まとめ

「169.254.169.254」は、EC2インスタンスから自身のメタデータへアクセスするために使われる特別なIPアドレスです。

インスタンスIDなどの情報に加え、IAMロールを設定している場合は一時的な認証情報の取得にも利用されます。

通常のインターネットIPとは異なり、リンクローカルアドレスとして扱われるため、インターネット経由でアクセスするものではありません。

AWSを利用する際は、「EC2が自分自身の情報を取得するための専用の窓口」と覚えておくと、169.254.169.254の役割をイメージしやすいでしょう。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次