インスタンス・メタデータ・サービスを使用するための Windows サーバーのセットアップ
Windowsサーバーからインスタンス・メタデータにアクセスするには、デフォルト・ゲートウェイを見つけ、ルートを追加する追加要件がある。
概要
Windowsでメタデータ・サービスを使うには、メタデータのリンク・ローカル・アドレスへのデフォルト・ルートを設定する。 そのためには、デフォルトゲートウェイのIPアドレスを特定し、リンクローカルアドレスにルートを追加する必要がある。 この初期セットアップの後、インスタンス・メタデータにアクセスするための呼び出しを実行します。
このトピックの情報は、別個のステップとして示されています。 多くの場合、すべてのステップを単一プロセスで実行する 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
A Python 自動化スクリプトには、次のようなコードが含まれる場合があります。
command = 'route -p add 169.254.169.254 MASK 255.255.255.255 ()'.format(default_gateway)
これらの例では route
コマンドを使用しますが、Powershell の New-NetRoute
コマンドを使用して、単一のコマンドで経路をパイピングすることもできます。 例えば、単一のコマンドでステップ 1 とステップ 2 を組み合わせるには、次のように指定できます。
C:\> powershell "Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object -ExpandProperty "NextHop" | New-NetRoute"
経路を追加するには、Windows サーバーで管理者として実行する必要があります。
ステップ 3: インスタンス・メタデータをプログラムで取得する
デフォルト・ゲートウェイにルートを追加した後、リンクローカル・アドレスを使用してインスタンスのメタデータにアクセスできます。 curl
など、ネットワーク経由でデータを転送するお好みのツールを使用して、オートメーション・スクリプトを構築します。
メタデータ・サービス API を呼び出してデータを取得する curl
コマンドを確認するには、実行中の仮想サーバー・インスタンスからのインスタンス・メタデータの取得を参照してください。