IMDSv2 のみの設定が反映されたか確認する方法
この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2025 | Advent Calendar 2025 - Qiita 15 日目の記事です。
困っていること
既存のインスタンスでインスタンスメタデータオプションを変更し IMDSv1 と IMDSv2 の両方を使用する設定から、推奨されている IMDSv2 の使用を強制する設定へ変更しました。
変更後にコンソール上で「i - ☓☓☓☓☓☓☓☓ のインスタンスメタデータオプションが正常に更新されました。このプロセスは反映されるまで数分かかることがあります。」と記載されていますが、変更完了を確実に確認する方法を教えてください。

どう対応すればいいの?
前提
EC2 インスタンスのメタデータオプションで IMDSv2 が Optional に設定されている場合、IMDSv1 と IMDSv2 の両方のリクエストが受け入れられます。
この場合、実際にどちらのバージョンが使用されるかは、アプリケーションやツールがどのように実装されているかによって決まります。
一方で Required になっている場合は、IMDSv2 が強制されます。
既存インスタンスのインスタンスメタデータオプションの変更|Amazon Elastic Compute Cloud
Require the use of IMDSv2
Use one of the following methods to modify the instance metadata options on an existing instance to require that IMDSv2 is used when requesting instance metadata. When IMDSv2 is required, IMDSv1 cannot be used.
Restore the use of IMDSv1
When IMDSv2 is required, IMDSv1 will not work when requesting instance metadata. When IMDSv2 is optional, then both IMDSv2 and IMDSv1 will work. Therefore, to restore IMDSv1, make IMDSv2 optional by using one of the following methods.
確認方法
インスタンスにログインし、以下のドキュメントに記載されているコマンドを実行し IMDSv1 でメタデータにアクセスすることで反映が確認できます。
IMDSv2 の設定が Required に正常に反映されている場合は、401 Unauthorized エラーが表示されます。
インスタンスメタデータサービスを使用してインスタンスメタデータにアクセスする|Amazon Elastic Compute Cloud
使用できるインスタンスメタデータのバージョンを取得する
次の例では使用できるインスタンスメタデータのバージョンを取得しています。
(中略)curl
curl http://169.254.169.254/PowerShell
Invoke-RestMethod -uri http://169.254.169.254/
コマンド実行結果が IMDSv2 の設定(Optional/Required)によって異なる理由は以下のとおりです。
IMDSv1 はシンプルな HTTP リクエストだけでメタデータを取得できる仕様です。
そのため、Optional 設定時はコマンド結果が正常に結果が返ってきます。
一方、IMDSv2 ではセキュリティ強化のため、事前にセッショントークンを取得してからアクセスする必要があります。Required 設定に変更後、トークンなしで同じコマンドを実行すると 401 Unauthorized エラーが返されるため、IMDSv2 の強制が正しく適用されたことが確認できます。
やってみた
Linux
IMDSv2 の使用を Optional(IMDSv1,IMDSv2 共に使用可) に設定した Linux インスタンスを起動します。

起動したインスタンスに SSH で接続し、コマンドcurl http://169.254.169.254/を実行します。

結果が正常に出力されたことを確認しました。
次にドキュメントの手順に沿って IMDSv2 を Required に変更します。

IMDSv2 が Required に変更され、インスタンスメタデータオプションの変更完了を示すポップアップが表示されたら再度 SSH で接続しコマンドを実行します。

401 Unauthorized が表示されたため、正常に IMDSv2 の使用が強制された設定へ変更されたことが確認できました。
Windows
IMDSv2 の使用を Optional に設定した Windows インスタンスを起動します。
起動したインスタンスに RDP 接続を行い、PoweShell でコマンドInvoke-RestMethod -uri http://169.254.169.254/を実行します。

結果が正常に出力されたことを確認しました。
ドキュメントの手順に沿って IMDSv2 を Required に変更します。
再度コマンドを実行したところ、Windows においても 401 Unauthorized が表示されることが確認できました。








