メタデータ・サービスを使用するためのウィンドウズ仮想サーバーの設定
Windows仮想サーバーからメタデータにアクセスするには、デフォルトゲートウェイの場所を特定し、ルートを追加する追加要件がある。
概要
Windowsでメタデータ・サービスを使うには、メタデータのリンク・ローカル・アドレスへのデフォルト・ルートを設定する。 そのためには、デフォルトゲートウェイのIPアドレスを特定し、リンクローカルアドレスにルートを追加する必要がある。 この初期設定の後、メタデータにアクセスするためのAPIリクエストを行うことができる。
このトピックの情報は、別個のステップとして示されています。 多くの場合、すべてのステップを単一プロセスで実行する cloudbaseinit 自動化プロセスをセットアップします。 必要事項を説明するために例が示されていますが、他の方法を使用してデフォルト・ゲートウェイを取得し、経路を追加することもできます。
ステップ 1 - デフォルト・ゲートウェイの IP を見つける
管理者として実行し、デフォルト・ゲートウェイの IP を見つけます。 Powershell の Get-NetRoute コマンドを使用すると便利です。
PowerShell Get-NetRoute コマンドレットを使用して、デフォルト ゲートウェイの IP を検索します。 このコマンドにより、デフォルト経路 (デフォルト・ゲートウェイとも呼ばれる) のネクスト・ホップを取得します。 のWindows Powershellドキュメントを参照してください。 Get-NetRoute.
Windows ターミナルから、以下の例では、デフォルト IP ルートを取得するために Powershell Get-NetRoute コマンドを呼び出し、ルートを SelectObject コマンドレットに渡し、各デフォルトルートの NextHop プロパティを表示します。
C:\> powershell "Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object -ExpandProperty "NextHop""
最初に検索されるIPアドレスはデフォルト・ルートである。 出力を変数に保管します。
ステップ 2: デフォルト・ゲートウェイに経路を追加する
メタデータ・サービスは、リンク・ローカル・アドレス( 169.254.169.254 )を使用して、 サービスへのアクセスを設定 し、 インスタンスからメタデータを取得する。
リンクローカルアドレスがデフォルトゲートウェイに到達できるように、デフォルトルートを設定する。 Windows 端末または Powershell 端末から、次のように指定します。
C:> route -p add 169.254.169.254 MASK 255.255.255.255 $DEFAULT_GATEWAY
次のコード例は、 Python 自動化スクリプトのものです:
command = 'route -p add 169.254.169.254 MASK 255.255.255.255 ()'.format(default_gateway)
これらの例では、 route コマンドを使用していますが、Powershell New-NetRoute コマンドを使用して、1つのコマンドでルートをパイプすることもできます。 ステップ1と2を1つのコマンドにまとめるには、次のように指定する:
C:\> powershell "Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object -ExpandProperty "NextHop" | New-NetRoute"
経路を追加するには、Windows サーバーで管理者として実行する必要があります。
ステップ3:プログラムでメタデータを取得する
デフォルトゲートウェイにルートを追加したら、リンクローカルアドレスを使ってメタデータにアクセスできる。 curl など、ネットワーク経由でデータを転送するお好みのツールを使用して、オートメーション・スクリプトを構築します。
メタデータ・サービスAPIを呼び出してデータを取得するための curl コマンドについては、 インスタンスからメタデータを取得するを 参照してください。