AWS
EC2

EC2でインスタンスメタデータが取得できないときのチェックポイント

More than 1 year has passed since last update.

前書き

なんかの拍子でEC2上で動いてるWindowsServer機からインスタンスメタデータが取得できなくなった

TL;DR

ルーティングテーブル異常
静的ルートで169.254.169.254にルーティングしている物を削除しReboot

そもそもインスタンスメタデータとは

インスタンスメタデータは、インスタンスに関するデータで、実行中のインスタンスを設定または管理するために使用します。インスタンスメタデータはいくつかのカテゴリに分けられます。
(http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)

実行中のインスタンスに関する様々なデータがawscliとか使わずにHTTPで取れるため、簡単に扱える

症状

壁紙に埋め込まれている情報が少ない

Windows機でリモートデスクトップを使って接続すると壁紙にインスタンスIDとかが表示されるかと思うがその表示数が少ない
正常な例
正常な例だが、ここからInstanceIDとかが表示されなくなる

メタデータサーバーに接続できない

単純にhttp://169.254.169.254/に繋がらない

調査

色々調査したが、今回はルーティングテーブルが怪しかった
Windows機なのでroute printしたところ

正常な例
C:\Windows\system32>route print
===========================================================================
インターフェイス一覧
  5...XX XX XX XX XX XX ......Intel(R) 82599 Virtual Function
  1...........................Software Loopback Interface 1
  6...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
  3...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
===========================================================================

IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先        ネットマスク          ゲートウェイ       インターフェイス  メトリック
----------------------------------(省略)-----------------------------------
===========================================================================
固定ルート:
  ネットワーク アドレス          ネットマスク  ゲートウェイ アドレス  メトリック
  169.254.169.254  255.255.255.255      XXX.XXX.XXX.XXX      15
  169.254.169.250  255.255.255.255      XXX.XXX.XXX.XXX      15
  169.254.169.251  255.255.255.255      XXX.XXX.XXX.XXX      15
===========================================================================

IPv6 ルート テーブル
===========================================================================
アクティブ ルート:
 If メトリック ネットワーク宛先      ゲートウェイ
----------------------------------(省略)-----------------------------------
===========================================================================
固定ルート:
  なし

C:\Windows\system32>

このように一部固定ルートがAWSから設定されているが、この中で一部ルート(169.254.169.254を含む)が明らかに異常値(重複していたり、存在しないゲートウェイにルーティングされていた)となっていた。

対策

該当ルートをroute delete 169.254.169.254し、再起動することにより正常なルーティング情報が自動的にセットされる