Azure Instance Metadata Service (Windows)

Azure Instance Metadata Service (IMDS) によって、現在実行中の仮想マシン インスタンスに関する情報が提供されます。 これを使用して、仮想マシンの管理と構成を行うことができます。 この情報には、SKU、ストレージ、ネットワークの構成、今後のメンテナンス イベントなどがあります。 使用できるデータの完全な一覧については、エンドポイント カテゴリの概要に関するページを参照してください。

IMDS は、仮想マシン (VM) のインスタンスと仮想マシン スケール セット インスタンスを実行するために使用できます。 Azure Resource Manager を使用して作成および管理されている VM は、すべてのエンドポイントでサポートされます。 クラシック デプロイ モデルを使用して作成された VM は、構成証明されたカテゴリと、インスタンス カテゴリのネットワーク部分のみでサポートされます。 構成証明されたエンドポイントでのサポートは、制限された範囲内のみとなります。

IMDS は、既知のルーティング不可能な IP アドレス (169.254.169.254) で使用できる REST API です。 VM 内からのみアクセスできます。 VM と IMDS 間の通信がホストから離れることはありません。 IMDS に対してクエリを実行する場合は、HTTP クライアントから VM 内の Web プロキシをバイパスし、169.254.169.254168.63.129.16 と同様に扱います。

使用方法

Azure Instance Metadata Service にアクセスする

IMDS にアクセスするには、Azure Resource Manager または Azure ポータルから VM を作成し、以下のサンプルを使用します。 その他の例については、「Azure Instance Metadata Samples (Azure Instance Metadata のサンプル)」を参照してください。

インスタンスのすべてのメタデータを取得するサンプル コードを次に示します。 特定のデータ ソースにアクセスするには、使用可能なすべての機能の概要について「エンドポイント カテゴリ」を参照してください。

Request

重要

この例では、プロキシをバイパスします。 IMDS に対してクエリを実行する場合は、プロキシをバイパスする 必要があります。 追加情報については、「プロキシ」を参照してください。

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance?api-version=2020-09-01" | ConvertTo-Json -Depth 64

Response

注意

応答は JSON 文字列です。 次の例の応答は、読みやすくするために整えられています。

{
    "compute": {
        "azEnvironment": "AZUREPUBLICCLOUD",
        "isHostCompatibilityLayerVm": "true",
        "licenseType":  "Windows_Client",
        "location": "westus",
        "name": "examplevmname",
        "offer": "WindowsServer",
        "osProfile": {
            "adminUsername": "admin",
            "computerName": "examplevmname",
            "disablePasswordAuthentication": "true"
        },
        "osType": "Windows",
        "placementGroupId": "f67c14ab-e92c-408c-ae2d-da15866ec79a",
        "plan": {
            "name": "planName",
            "product": "planProduct",
            "publisher": "planPublisher"
        },
        "platformFaultDomain": "36",
        "platformUpdateDomain": "42",
        "publicKeys": [{
                "keyData": "ssh-rsa 0",
                "path": "/home/user/.ssh/authorized_keys0"
            },
            {
                "keyData": "ssh-rsa 1",
                "path": "/home/user/.ssh/authorized_keys1"
            }
        ],
        "publisher": "RDFE-Test-Microsoft-Windows-Server-Group",
        "resourceGroupName": "macikgo-test-may-23",
        "resourceId": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/virtualMachines/examplevmname",
        "securityProfile": {
            "secureBootEnabled": "true",
            "virtualTpmEnabled": "false"
        },
        "sku": "2019-Datacenter",
        "storageProfile": {
            "dataDisks": [{
                "caching": "None",
                "createOption": "Empty",
                "diskSizeGB": "1024",
                "image": {
                    "uri": ""
                },
                "lun": "0",
                "managedDisk": {
                    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampledatadiskname",
                    "storageAccountType": "Standard_LRS"
                },
                "name": "exampledatadiskname",
                "vhd": {
                    "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            }],
            "imageReference": {
                "id": "",
                "offer": "WindowsServer",
                "publisher": "MicrosoftWindowsServer",
                "sku": "2019-Datacenter",
                "version": "latest"
            },
            "osDisk": {
                "caching": "ReadWrite",
                "createOption": "FromImage",
                "diskSizeGB": "30",
                "diffDiskSettings": {
                    "option": "Local"
                },
                "encryptionSettings": {
                    "enabled": "false"
                },
                "image": {
                    "uri": ""
                },
                "managedDisk": {
                    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampleosdiskname",
                    "storageAccountType": "Standard_LRS"
                },
                "name": "exampleosdiskname",
                "osType": "Windows",
                "vhd": {
                    "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            },
            "resourceDisk": {
                "size": "4096"
            }
        },
        "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
        "tags": "baz:bash;foo:bar",
        "userData": "Zm9vYmFy",
        "version": "15.05.22",
        "vmId": "02aab8a4-74ef-476e-8182-f6d2ba4166a6",
        "vmScaleSetName": "crpteste9vflji9",
        "vmSize": "Standard_A3",
        "zone": ""
    },
    "network": {
        "interface": [{
            "ipv4": {
               "ipAddress": [{
                    "privateIpAddress": "10.144.133.132",
                    "publicIpAddress": ""
                }],
                "subnet": [{
                    "address": "10.144.133.128",
                    "prefix": "26"
                }]
            },
            "ipv6": {
                "ipAddress": [
                 ]
            },
            "macAddress": "0011AAFFBB22"
        }]
    }
}

セキュリティと認証

Instance Metadata Service には、実行中の仮想マシン インスタンス内からのみ、ルーティング不可能な IP アドレスでアクセスできます。 VM は、それ自体に関連するメタデータまたは機能との相互作用に限定されます。 API は HTTP のみであり、ホストから出ることはありません。

要求が IMDS に確実に直接送信されるようにし、意図しない、または望ましくない要求のリダイレクトを防ぐには、要求を次のように処理する必要があります。

  • ヘッダー Metadata: true含める
  • ヘッダー X-Forwarded-For含めない

これらの要件の 両方 が満たされていない要求は、サービスによって拒否されます。

重要

IMDS は、機密データ用のチャネルでは ありません。 API は認証されておらず、VM 上のすべてのプロセスに対してオープン状態になっています。 このサービスを通じて公開される情報は、VM 内で実行されているすべてのアプリケーションに対する共有情報と見なす必要があります。

プロキシ

IMDS をプロキシの背後で使用することは 想定されておらず、サポートされていません。 ほとんどの HTTP クライアントでは、要求に応じてプロキシを無効にするオプションが提供されています。この機能は、IMDS と通信するときに使用する必要があります。 詳細については、クライアントのドキュメントを参照してください。

重要

お使いの環境でプロキシ構成がわからない場合でも、既定のクライアント プロキシ設定をオーバーライドする必要があります。 プロキシ構成は自動的に検出され、このような構成をバイパスしないと、コンピューターの構成が将来変更された場合に侵害のリスクが生じます。

レート制限

一般に、IMDS への要求は、1 秒あたり 5 つの要求に制限されます。 このしきい値を超える要求は、429 の応答で拒否されます。 マネージド ID カテゴリに対する要求は、1 秒あたり 20 個の要求、同時要求数は 5 個に制限されます。

HTTP 動詞

現在、次の HTTP 動詞がサポートされています。

動詞 説明
GET 要求されたリソースの取得

パラメーター

エンドポイントでは、必須パラメーターまたは省略可能なパラメーターがサポートされる場合があります。 詳細については、「スキーマ」と、対象の特定のエンドポイントに関するドキュメントを参照してください。

クエリ パラメーター

IMDS エンドポイントでは、HTTP クエリ文字列パラメーターがサポートされています。 次に例を示します。

http://169.254.169.254/metadata/instance/compute?api-version=2019-06-04&format=json

パラメーターを指定します。

名前
api-version 2019-06-04
format json

クエリ パラメーター名が重複している要求は拒否されます。

ルート パラメーター

より大きな JSON BLOB を返す一部のエンドポイントでは、応答のサブセットに絞り込むために、要求エンドポイントへのルート パラメーターの追加がサポートされています。

http://169.254.169.254/metadata/<endpoint>/[<filter parameter>/...]?<query parameters>

パラメーターは、解析された表現を操作する場合に、JSON オブジェクトを処理するのに使用されるインデックスとキーに対応します。

たとえば、/metatadata/instance によって JSON オブジェクトが返されます。

{
    "compute": { ... },
    "network": {
        "interface": [
            {
                "ipv4": {
                   "ipAddress": [{
                        "privateIpAddress": "10.144.133.132",
                        "publicIpAddress": ""
                    }],
                    "subnet": [{
                        "address": "10.144.133.128",
                        "prefix": "26"
                    }]
                },
                "ipv6": {
                    "ipAddress": [
                     ]
                },
                "macAddress": "0011AAFFBB22"
            },
            ...
        ]
    }
}

応答をフィルター処理して compute プロパティのみに絞り込む場合は、次の要求を送信します。

http://169.254.169.254/metadata/instance/compute?api-version=<version>

同様に、入れ子になったプロパティまたは特定の配列要素に絞り込む場合は、次のようにさらにキーを追加します。

http://169.254.169.254/metadata/instance/network/interface/0?api-version=<version>

これにより、Network.interface プロパティの最初の要素に絞り込まれ、次の内容が返されます。

{
    "ipv4": {
       "ipAddress": [{
            "privateIpAddress": "10.144.133.132",
            "publicIpAddress": ""
        }],
        "subnet": [{
            "address": "10.144.133.128",
            "prefix": "26"
        }]
    },
    "ipv6": {
        "ipAddress": [
         ]
    },
    "macAddress": "0011AAFFBB22"
}

注意

リーフ ノードに絞り込む場合、format=json は機能しません。 これらのクエリでは、既定の形式は json なので、format=text を明示的に指定する必要があります。

スキーマ

データ形式

既定では、IMDS によって JSON 形式 (Content-Type: application/json) でデータが返されます。 ただし、応答のフィルター処理をサポートするエンドポイント (「ルート パラメーター」を参照) では、text 形式もサポートされています。

既定以外の応答形式にアクセスするには、要求のクエリ文字列パラメーターとして要求の形式を指定します。 次に例を示します。

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"

JSON 応答では、すべてのプリミティブは string 型になり、欠損値または対象外の値は常に含まれますが、空の文字列に設定されます。

バージョン管理

IMDS はバージョン管理されており、HTTP 要求での API バージョンの指定は必須です。 この要件の唯一の例外はバージョン エンドポイントであり、使用可能な API バージョンを動的に取得するために使用できます。

新しいバージョンが追加されても、特定のデータ形式への依存関係がスクリプトにある場合、互換性を確保するために古いバージョンにもアクセスできます。

バージョンを指定しない場合、エラーが表示され、サポートされている最新バージョンの一覧が示されます。

{
    "error": "Bad request. api-version was not specified in the request. For more information refer to aka.ms/azureimds",
    "newest-versions": [
        "2020-10-01",
        "2020-09-01",
        "2020-07-15"
    ]
}

サポートされる API バージョン

  • 2017-03-01
  • 2017-04-02
  • 2017-08-01
  • 2017-10-01
  • 2017-12-01
  • 2018-02-01
  • 2018-04-02
  • 2018-10-01
  • 2019-02-01
  • 2019-03-11
  • 2019-04-30
  • 2019-06-01
  • 2019-06-04
  • 2019-08-01
  • 2019-08-15
  • 2019-11-01
  • 2020-06-01
  • 2020-07-15
  • 2020-09-01
  • 2020-10-01
  • 2020-12-01
  • 2021-01-01

Swagger

IMDS の完全な Swagger 定義は、 https://github.com/Azure/azure-rest-api-specs/blob/master/specification/imds/data-plane/readme.md で入手できます。

リージョン別の提供状況

このサービスは、すべての Azure クラウドで 一般提供 されています。

ルート エンドポイント

ルート エンドポイントは http://169.254.169.254/metadata です。

エンドポイント カテゴリ

IMDS API には、さまざまなデータ ソースを表す複数のエンドポイント カテゴリが含まれており、それぞれに 1 つ以上のエンドポイントが含まれています。 詳細については、各カテゴリを参照してください。

カテゴリ ルート 説明 導入されたバージョン
/metadata/attested 構成証明済みデータ」をご覧ください 2018-10-01
/metadata/identity IMDS 経由でのマネージド ID に関するページを参照 2018-02-01
/metadata/instance インスタンス メタデータ」を参照 2017-04-02
/metadata/loadbalancer IMDS を使用した Load Balancer メタデータの取得」を参照 2020-10-01
/metadata/scheduledevents IMDS 経由のスケジュールされたイベントに関するページを参照 2017-08-01
/metadata/versions バージョン」を参照 該当なし

バージョン

注意

この機能はバージョン 2020-10-01 と共にリリースされましたが、現在展開中であるため、一部のリージョンではまだ使用できない場合があります。

API バージョンの一覧表示

サポートされている API バージョンのセットを返します。

GET /metadata/versions

パラメーター

なし (このエンドポイントはバージョン管理されていません)。

Response

{
  "apiVersions": [
    "2017-03-01",
    "2017-04-02",
    ...
  ]
}

インスタンス メタデータ

VM メタデータの取得

コンピューティング、ネットワーク、ストレージなど、VM インスタンスの重要なメタデータを公開します。

GET /metadata/instance

パラメーター

名前 必須/省略可能 説明
api-version 必須 要求を処理するために使用されるバージョン。
format 省略可能* 応答の形式 (json または text)。 *注:要求パラメーターを使用するときに必要になる場合があります。

このエンドポイントでは、ルート パラメーターを使用した応答フィルター処理がサポートされています。

Response

{
    "compute": {
        "azEnvironment": "AZUREPUBLICCLOUD",
        "isHostCompatibilityLayerVm": "true",
        "licenseType":  "Windows_Client",
        "location": "westus",
        "name": "examplevmname",
        "offer": "WindowsServer",
        "osProfile": {
            "adminUsername": "admin",
            "computerName": "examplevmname",
            "disablePasswordAuthentication": "true"
        },
        "osType": "Windows",
        "placementGroupId": "f67c14ab-e92c-408c-ae2d-da15866ec79a",
        "plan": {
            "name": "planName",
            "product": "planProduct",
            "publisher": "planPublisher"
        },
        "platformFaultDomain": "36",
        "platformUpdateDomain": "42",
        "publicKeys": [{
                "keyData": "ssh-rsa 0",
                "path": "/home/user/.ssh/authorized_keys0"
            },
            {
                "keyData": "ssh-rsa 1",
                "path": "/home/user/.ssh/authorized_keys1"
            }
        ],
        "publisher": "RDFE-Test-Microsoft-Windows-Server-Group",
        "resourceGroupName": "macikgo-test-may-23",
        "resourceId": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/virtualMachines/examplevmname",
        "securityProfile": {
            "secureBootEnabled": "true",
            "virtualTpmEnabled": "false"
        },
        "sku": "2019-Datacenter",
        "storageProfile": {
            "dataDisks": [{
                "caching": "None",
                "createOption": "Empty",
                "diskSizeGB": "1024",
                "image": {
                    "uri": ""
                },
                "lun": "0",
                "managedDisk": {
                    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampledatadiskname",
                    "storageAccountType": "Standard_LRS"
                },
                "name": "exampledatadiskname",
                "vhd": {
                    "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            }],
            "imageReference": {
                "id": "",
                "offer": "WindowsServer",
                "publisher": "MicrosoftWindowsServer",
                "sku": "2019-Datacenter",
                "version": "latest"
            },
            "osDisk": {
                "caching": "ReadWrite",
                "createOption": "FromImage",
                "diskSizeGB": "30",
                "diffDiskSettings": {
                    "option": "Local"
                },
                "encryptionSettings": {
                    "enabled": "false"
                },
                "image": {
                    "uri": ""
                },
                "managedDisk": {
                    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampleosdiskname",
                    "storageAccountType": "Standard_LRS"
                },
                "name": "exampleosdiskname",
                "osType": "Windows",
                "vhd": {
                    "uri": ""
                },
                "writeAcceleratorEnabled": "false"
            },
            "resourceDisk": {
                "size": "4096"
            }
        },
        "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
        "tags": "baz:bash;foo:bar",
        "userData": "Zm9vYmFy",
        "version": "15.05.22",
        "vmId": "02aab8a4-74ef-476e-8182-f6d2ba4166a6",
        "vmScaleSetName": "crpteste9vflji9",
        "vmSize": "Standard_A3",
        "zone": ""
    },
    "network": {
        "interface": [{
            "ipv4": {
               "ipAddress": [{
                    "privateIpAddress": "10.144.133.132",
                    "publicIpAddress": ""
                }],
                "subnet": [{
                    "address": "10.144.133.128",
                    "prefix": "26"
                }]
            },
            "ipv6": {
                "ipAddress": [
                 ]
            },
            "macAddress": "0011AAFFBB22"
        }]
    }
}

スキーマの内訳:

Compute

Data 説明 導入されたバージョン
azEnvironment VM が実行されている Azure 環境 2018-10-01
customData IMDS では、この機能は非推奨とされ、無効になっています。 userData に置き換えられています。 2019-02-01
evictionPolicy スポット VM を削除する方法を設定します。 2020-12-01
isHostCompatibilityLayerVm ホストの互換性レイヤーで VM が実行されているかどうかを示します 2020-06-01
licenseType Azure ハイブリッド特典のライセンスの種類。 これは AHB 対応 VM でのみ利用できます。 2020-09-01
location VM を実行中の Azure リージョン 2017-04-02
name VM の名前 2017-04-02
offer VM イメージのオファーの情報。Azure イメージ ギャラリーからデプロイされるイメージについてのみ存在します。 2017-04-02
osProfile.adminUsername 管理者アカウントの名前を指定します。 2020-07-15
osProfile.computerName コンピューターの名前を指定します。 2020-07-15
osProfile.disablePasswordAuthentication パスワード認証が無効かどうかを指定します。 これは Linux VM でのみ利用できます。 2020-10-01
osType Linux または Windows 2017-04-02
placementGroupId お使いの仮想マシン スケール セットの配置グループ 2017-08-01
plan VM が Azure Marketplace イメージである場合、プランにはその名前、製品、および発行元が含まれています 2018-04-02
platformUpdateDomain VM を実行中の更新ドメイン 2017-04-02
platformFaultDomain VM を実行中の障害ドメイン 2017-04-02
priority VM の優先度。 詳細については、「スポット VM」を参照してください 2020-12-01
provider VM のプロバイダー 2018-10-01
publicKeys VM とパスに割り当てられた公開キーのコレクション 2018-04-02
publisher VM イメージの発行元 2017-04-02
resourceGroupName お使いの仮想マシンのリソース グループ 2017-08-01
resourceId リソースの完全修飾 ID 2019-03-11
sku VM イメージの特定の SKU 2017-04-02
securityProfile.secureBootEnabled VM で UEFI セキュア ブートが有効になっているかどうかを示します 2020-06-01
securityProfile.virtualTpmEnabled VM で仮想トラステッド プラットフォーム モジュール (TPM) が有効になっているかどうかを示します 2020-06-01
storageProfile 下記の「ストレージ プロファイル」を参照してください 2019-06-01
subscriptionId 仮想マシンの Azure サブスクリプション 2017-08-01
tags お使いの仮想マシンのタグ 2017-08-01
tagsList プログラムによる解析を簡単にするために JSON 配列として書式設定されたタグ 2019-06-04
userData プロビジョニング中またはプロビジョニング後に使用するために VM が作成されたときに指定されたデータのセット (Base64 エンコード) 2021-01-01
version VM イメージのバージョン 2017-04-02
vmId VM の一意の識別子 2017-04-02
vmScaleSetName お使いの仮想マシン スケール セットの仮想マシン スケール セット名 2017-12-01
vmSize VM サイズ 2017-04-02
zone 仮想マシンの可用性ゾーン 2017-12-01

ストレージ プロファイル

VM のストレージ プロファイルは、イメージ参照、OS ディスク、データ ディスクの 3 つのカテゴリに分類されます。

イメージ参照オブジェクトには、OS イメージに関する次の情報が含まれています。

Data 説明
id Resource ID
offer プラットフォームまたは marketplace イメージのオファー
publisher イメージ発行者
sku イメージ SKU
version プラットフォームまたは marketplace イメージのバージョン

OS ディスク オブジェクトには、VM によって使用される OS ディスクに関する次の情報が含まれています。

Data 説明
caching キャッシュの要件
createOption VM が作成された方法に関する情報
diffDiskSettings 一時ディスクの設定
diskSizeGB ディスクのサイズ (GB)
image ソース ユーザー イメージの仮想ハード ディスク
lun ディスクの論理ユニット番号
managedDisk マネージド ディスクのパラメーター
name ディスク名
vhd 仮想ハード ディスク
writeAcceleratorEnabled ディスクで writeAccelerator が有効になっているかどうか

データ ディスク アレイには、VM に接続されているデータ ディスクの一覧が含まれています。 各データ ディスク オブジェクトには、次の情報が含まれています。

Data 説明
caching キャッシュの要件
createOption VM が作成された方法に関する情報
diffDiskSettings 一時ディスクの設定
diskSizeGB ディスクのサイズ (GB)
encryptionSettings ディスクの暗号化の設定
image ソース ユーザー イメージの仮想ハード ディスク
managedDisk マネージド ディスクのパラメーター
name ディスク名
osType ディスクに含まれている OS の種類
vhd 仮想ハード ディスク
writeAcceleratorEnabled ディスクで writeAccelerator が有効になっているかどうか

Network

Data 説明 導入されたバージョン
ipv4.privateIpAddress VM のローカル IPv4 アドレス 2017-04-02
ipv4.publicIpAddress VM のパブリック IPv4 アドレス 2017-04-02
subnet.address VM のサブネット アドレス 2017-04-02
subnet.prefix サブネットのプレフィックス (24 など) 2017-04-02
ipv6.ipAddress VM のローカル IPv6 アドレス 2017-04-02
macAddress VM の mac アドレス 2017-04-02

ユーザー データを取得する

新しい VM を作成するときに、VM のプロビジョニング中またはプロビジョニング後に使用されるデータのセットを指定し、IMDS を通じて取得することができます。 ユーザー データを設定するには、こちらのクイックスタート テンプレートを利用します。 次のサンプルは、IMDS を介してこのデータを取得する方法を示しています。

注意

この機能はバージョン 2021-01-01 でリリースされ、Azure プラットフォームの更新プログラムに依存します。これは現在ロールアウトされている最中で、まだすべてのリージョンで利用できない場合があります。

注意

セキュリティに関する通知: IMDS は VM 上のすべてのアプリケーションに対して開かれているため、機密データをユーザー データに配置しないでください。

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/compute/userData?api-version=2021-01-01&format=text" | base64 --decode

サンプル 1:Azure で動作している VM の追跡

サービス プロバイダーは、ソフトウェアを実行している VM の数を追跡する必要があったり、VM の一意性を追跡する必要のあるエージェントを使用していたりする場合があります。 VM の一意の ID を取得できるようにするには、Instance Metadata Service から vmId フィールドを使用します。

Request

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/compute/vmId?api-version=2017-08-01&format=text"

Response

5c08b38e-4d57-4c23-ac45-aca61037f084

サンプル 2:異なるデータ レプリカの配置

特定のシナリオでは、異なるレプリカの配置が非常に重要です。 たとえば、Orchestrator を介した HDFS レプリカの配置またはコンテナーの配置では、VM が実行されている platformFaultDomainplatformUpdateDomain を把握しておく必要がある場合があります。 これらの決定を行うために、インスタンスの可用性ゾーンを使用することもできます。 IMDS を介して、このデータに直接クエリを実行できます。

Request

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/compute/platformFaultDomain?api-version=2017-08-01&format=text"

Response

0

サンプル 3: VM タグを取得する

VM タグは、instance/compute/tags エンドポイントの下にあるインスタンス API に含まれています。 論理的に分類するために Azure VM にタグが適用されている場合があります。 次の要求を使用して、VM に割り当てられたタグを取得できます。

Request

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/compute/tags?api-version=2017-08-01&format=text"

Response

Department:IT;ReferenceNumber:123456;TestStatus:Pending

tags フィールドは、セミコロンで区切られたタグを含む文字列です。 この出力は、タグ自体でセミコロンが使用されている場合に問題になることがあります。 プログラムでタグを抽出するようにパーサーが作成されている場合は、tagsList フィールドを使用する必要があります。 tagsList フィールドは区切り記号のない JSON 配列であるため、解析が容易になります。 次の要求を使用して、VM に割り当てられた tagsList を取得できます。

Request

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/compute/tagsList?api-version=2019-06-04" | ConvertTo-Json -Depth 64

Response

{
    "value":  [
                  {
                      "name":  "Department",
                      "value":  "IT"
                  },
                  {
                      "name":  "ReferenceNumber",
                      "value":  "123456"
                  },
                  {
                      "name":  "TestStatus",
                      "value":  "Pending"
                  }
              ],
    "Count":  3
}

サンプル 4: サポート ケースの際の VM に関する詳細情報を取得する

サービス プロバイダーとして、VM の詳細情報を得る必要があるサポート コールを受けることがあります。 顧客にコンピューティング メタデータの共有を依頼すると、サポート担当者が Azure 上の VM の種類を確認するための基本情報を得られる場合があります。

Request

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/compute?api-version=2020-09-01" | ConvertTo-Json -Depth 64

Response

注意

応答は JSON 文字列です。 次の例の応答は、読みやすくするために整えられています。

{
    "azEnvironment": "AZUREPUBLICCLOUD",
    "isHostCompatibilityLayerVm": "true",
    "licenseType":  "Windows_Client",
    "location": "westus",
    "name": "examplevmname",
    "offer": "WindowsServer",
    "osProfile": {
        "adminUsername": "admin",
        "computerName": "examplevmname",
        "disablePasswordAuthentication": "true"
    },
    "osType": "Windows",
    "placementGroupId": "f67c14ab-e92c-408c-ae2d-da15866ec79a",
    "plan": {
        "name": "planName",
        "product": "planProduct",
        "publisher": "planPublisher"
    },
    "platformFaultDomain": "36",
    "platformUpdateDomain": "42",
    "publicKeys": [{
            "keyData": "ssh-rsa 0",
            "path": "/home/user/.ssh/authorized_keys0"
        },
        {
            "keyData": "ssh-rsa 1",
            "path": "/home/user/.ssh/authorized_keys1"
        }
    ],
    "publisher": "RDFE-Test-Microsoft-Windows-Server-Group",
    "resourceGroupName": "macikgo-test-may-23",
    "resourceId": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/virtualMachines/examplevmname",
    "securityProfile": {
        "secureBootEnabled": "true",
        "virtualTpmEnabled": "false"
    },
    "sku": "2019-Datacenter",
    "storageProfile": {
        "dataDisks": [{
            "caching": "None",
            "createOption": "Empty",
            "diskSizeGB": "1024",
            "image": {
                "uri": ""
            },
            "lun": "0",
            "managedDisk": {
                "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampledatadiskname",
                "storageAccountType": "Standard_LRS"
            },
            "name": "exampledatadiskname",
            "vhd": {
                "uri": ""
            },
            "writeAcceleratorEnabled": "false"
        }],
        "imageReference": {
            "id": "",
            "offer": "WindowsServer",
            "publisher": "MicrosoftWindowsServer",
            "sku": "2019-Datacenter",
            "version": "latest"
        },
        "osDisk": {
            "caching": "ReadWrite",
            "createOption": "FromImage",
            "diskSizeGB": "30",
            "diffDiskSettings": {
                "option": "Local"
            },
            "encryptionSettings": {
                "enabled": "false"
            },
            "image": {
                "uri": ""
            },
            "managedDisk": {
                "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampleosdiskname",
                "storageAccountType": "Standard_LRS"
            },
            "name": "exampleosdiskname",
            "osType": "Windows",
            "vhd": {
                "uri": ""
            },
            "writeAcceleratorEnabled": "false"
        }
    },
    "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
    "tags": "baz:bash;foo:bar",
    "version": "15.05.22",
    "vmId": "02aab8a4-74ef-476e-8182-f6d2ba4166a6",
    "vmScaleSetName": "crpteste9vflji9",
    "vmSize": "Standard_A3",
    "zone": ""
}

サンプル 5: VM が実行されている Azure 環境を取得する

Azure には、Azure Government など多数のソブリン クラウドがあります。 ランタイムの決定を行うために、Azure 環境が必要な場合があります。 次の例では、この動作を実現する方法を示します。

Request

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/compute/azEnvironment?api-version=2018-10-01&format=text"

Response

AzurePublicCloud

クラウドと Azure 環境の値を次に示します。

クラウド Azure 環境
一般公開されている全世界のすべての Azure リージョン AzurePublicCloud
Azure Government AzureUSGovernmentCloud
Azure China 21Vianet AzureChinaCloud
Azure Germany AzureGermanCloud

サンプル 6: ネットワーク情報を取得する

Request

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/network?api-version=2017-08-01" | ConvertTo-Json  -Depth 64

Response

{
  "interface": [
    {
      "ipv4": {
        "ipAddress": [
          {
            "privateIpAddress": "10.1.0.4",
            "publicIpAddress": "X.X.X.X"
          }
        ],
        "subnet": [
          {
            "address": "10.1.0.0",
            "prefix": "24"
          }
        ]
      },
      "ipv6": {
        "ipAddress": []
      },
      "macAddress": "000D3AF806EC"
    }
  ]
}

サンプル 7: パブリック IP アドレスを取得する

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text"

構成証明済みデータ

構成証明済みデータの取得

IMDS は、提供されるデータが Azure から送信されることを保証するために役立ちます。 Microsoft によってこの情報の一部に署名が行われるため、Azure Marketplace のイメージが Azure で実行されているものであることを確認できます。

GET /metadata/attested/document

パラメーター

名前 必須/省略可能 説明
api-version 必須 要求を処理するために使用されるバージョン。
nonce Optional 暗号化 nonce として機能する 10 桁の文字列。 値が指定されていない場合、IMDS では現在の UTC タイムスタンプが使用されます。

Response

{
    "encoding":"pkcs7",
    "signature":"MIIEEgYJKoZIhvcNAQcCoIIEAzCCA/8CAQExDzANBgkqhkiG9w0BAQsFADCBugYJKoZIhvcNAQcBoIGsBIGpeyJub25jZSI6IjEyMzQ1NjY3NjYiLCJwbGFuIjp7Im5hbWUiOiIiLCJwcm9kdWN0IjoiIiwicHVibGlzaGVyIjoiIn0sInRpbWVTdGFtcCI6eyJjcmVhdGVkT24iOiIxMS8yMC8xOCAyMjowNzozOSAtMDAwMCIsImV4cGlyZXNPbiI6IjExLzIwLzE4IDIyOjA4OjI0IC0wMDAwIn0sInZtSWQiOiIifaCCAj8wggI7MIIBpKADAgECAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBBAUAMCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tMB4XDTE4MTEyMDIxNTc1N1oXDTE4MTIyMDIxNTc1NlowKzEpMCcGA1UEAxMgdGVzdHN1YmRvbWFpbi5tZXRhZGF0YS5henVyZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAML/tBo86ENWPzmXZ0kPkX5dY5QZ150mA8lommszE71x2sCLonzv4/UWk4H+jMMWRRwIea2CuQ5RhdWAHvKq6if4okKNt66fxm+YTVz9z0CTfCLmLT+nsdfOAsG1xZppEapC0Cd9vD6NCKyE8aYI1pliaeOnFjG0WvMY04uWz2MdAgMBAAGjYDBeMFwGA1UdAQRVMFOAENnYkHLa04Ut4Mpt7TkJFfyhLTArMSkwJwYDVQQDEyB0ZXN0c3ViZG9tYWluLm1ldGFkYXRhLmF6dXJlLmNvbYIQZ8VuSofHbJRAQNBNpiASdDANBgkqhkiG9w0BAQQFAAOBgQCLSM6aX5Bs1KHCJp4VQtxZPzXF71rVKCocHy3N9PTJQ9Fpnd+bYw2vSpQHg/AiG82WuDFpPReJvr7Pa938mZqW9HUOGjQKK2FYDTg6fXD8pkPdyghlX5boGWAMMrf7bFkup+lsT+n2tRw2wbNknO1tQ0wICtqy2VqzWwLi45RBwTGB6DCB5QIBATA/MCsxKTAnBgNVBAMTIHRlc3RzdWJkb21haW4ubWV0YWRhdGEuYXp1cmUuY29tAhBnxW5Kh8dslEBA0E2mIBJ0MA0GCSqGSIb3DQEBCwUAMA0GCSqGSIb3DQEBAQUABIGAld1BM/yYIqqv8SDE4kjQo3Ul/IKAVR8ETKcve5BAdGSNkTUooUGVniTXeuvDj5NkmazOaKZp9fEtByqqPOyw/nlXaZgOO44HDGiPUJ90xVYmfeK6p9RpJBu6kiKhnnYTelUk5u75phe5ZbMZfBhuPhXmYAdjc7Nmw97nx8NnprQ="
}

注意

IMDS のキャッシュ メカニズムにより、以前にキャッシュされた nonce 値が返される場合もあります。

signature BLOB は、ドキュメントの pkcs7 で署名されたバージョンです。 特定の VM 固有の詳細と共に署名に使用される証明書が含まれています。

Azure Resource Manager を使用して作成された VM の場合、ドキュメントには、ドキュメントの作成と有効期限のための vmIdskunoncesubscriptionIdtimeStamp とイメージに関するプラン情報が含まれています。 プラン情報は Azure Marketplace のイメージにのみ設定されます。

クラシック デプロイ モデルを使用して作成された VM の場合、設定されることが保証されるのは vmId のみです。 応答から証明書を抽出し、応答が有効で Azure から送られたものであることを確認するために使用できます。

デコードされたドキュメントには、次のフィールドが含まれています。

Data 説明 導入されたバージョン
licenseType Azure ハイブリッド特典のライセンスの種類。 これは AHB 対応 VM でのみ利用できます。 2020-09-01
nonce 必要に応じて、要求で指定できる文字列。 nonce が指定されていない場合は、現在の協定世界時のタイムスタンプが使用されます。 2018-10-01
plan Azure Marketplace イメージ プラン。 プラン ID (名前)、製品イメージまたはオファー (製品)、およびパブリッシャー ID (パブリッシャー) が含まれます。 2018-10-01
timestamp.createdOn 署名されたドキュメントが作成されたときの UTC タイムスタンプ 2018-20-01
timestamp.expiresOn 署名されたドキュメントの有効期限が切れるときの UTC タイムスタンプ 2018-10-01
vmId VM の一意の識別子 2018-10-01
subscriptionId 仮想マシンの Azure サブスクリプション 2019-04-30
sku VM イメージの特定の SKU 2019-11-01

注意

従来の (Azure Resource Manager 以外の) VM の場合は、vmId の設定のみが保証されます。

ドキュメントのサンプル:

{
   "nonce":"20201130-211924",
   "plan":{
      "name":"planName",
      "product":"planProduct",
      "publisher":"planPublisher"
   },
   "sku":"Windows-Server-2012-R2-Datacenter",
   "subscriptionId":"8d10da13-8125-4ba9-a717-bf7490507b3d",
   "timeStamp":{
      "createdOn":"11/30/20 21:19:19 -0000",
      "expiresOn":"11/30/20 21:19:24 -0000"
   },
   "vmId":"02aab8a4-74ef-476e-8182-f6d2ba4166a6"
}

サンプル 1:VM が Azure で実行されていることの検証

Azure Marketplace のベンダーは、自分たちのソフトウェアが Azure でのみ実行されるようにライセンスされていることを確認することを望みます。 だれかが VHD をオンプレミスの環境にコピーする場合、ベンダーはそれを検出できる必要があります。 これらのベンダーは、IMDS を介して、応答が Azure のみからであることを保証する署名付きデータを取得できます。

注意

このサンプルを実行するには、jq ユーティリティがインストールされている必要があります。

検証

# Get the signature
$attestedDoc = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Proxy $Null -Uri http://169.254.169.254/metadata/attested/document?api-version=2020-09-01
# Decode the signature
$signature = [System.Convert]::FromBase64String($attestedDoc.signature)

署名が Microsoft Azure のものであることを確認し、証明書チェーンにエラーがないか確認します。

# Get certificate chain
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]($signature)
$chain = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Chain
$chain.Build($cert)
# Print the Subject of each certificate in the chain
foreach($element in $chain.ChainElements)
{
    Write-Host $element.Certificate.Subject
}

# Get the content of the signed document
Add-Type -AssemblyName System.Security
$signedCms = New-Object -TypeName System.Security.Cryptography.Pkcs.SignedCms
$signedCms.Decode($signature);
$content = [System.Text.Encoding]::UTF8.GetString($signedCms.ContentInfo.Content)
Write-Host "Attested data: " $content
$json = $content | ConvertFrom-Json
# Do additional validation here

注意

IMDS のキャッシュ メカニズムにより、以前にキャッシュされた nonce 値が返される場合があります。

最初の要求で nonce パラメーターを指定した場合、署名されたドキュメントの nonce を比較できます。

注意

パブリック クラウド用の証明書と各ソブリン クラウド用の証明書は異なります。

クラウド Certificate
一般公開されている全世界のすべての Azure リージョン *.metadata.azure.com
Azure Government *.metadata.azure.us
Azure China 21Vianet *.metadata.azure.cn
Azure Germany *.metadata.microsoftazure.de

注意

証明書では、パブリック クラウドに対して metadata.azure.com が完全に一致していない可能性があります。 そのため、証明書の検証では、任意の .metadata.azure.com サブドメインからの共通名を許可する必要があります。

検証時にネットワークの制約が原因で中間証明書をダウンロードできない場合は、中間証明書をピン留めできます。 Azure によって証明書がロールオーバーされます。これは PKI の標準的な動作です。 ロールオーバーが行われたら、ピン留めされた証明書を更新する必要があります。 中間証明書を更新する変更を計画すると、そのたびに、Azure ブログが更新され、Azure の顧客に通知されます。

中間証明書は、「PKI リポジトリ」で見つけることができます。 中間証明書は、リージョンごとに異なる場合があります。

注意

Azure China 21Vianet 用の中間証明書は、Baltimore ではなく DigiCert Global Root CA からのものです。 ルート チェーン機関の変更の一環として Azure China 用の中間証明書をピン留めした場合は、中間証明書を更新する必要があります。

マネージド ID

システムによって割り当てられたマネージド ID は、VM 上で有効にすることができます。 1 つ以上のユーザー割り当てのマネージド ID を VM に割り当てることもできます。 その後、IMDS からマネージド ID のトークンを要求できます。 これらのトークンは、Azure Key Vault などの他の Azure サービスで認証するために使用します。

この機能を有効にするための詳細な手順については、アクセストークンの取得に関するページを参照してください。

Load Balancer メタデータ

仮想マシンまたは仮想マシン セットのインスタンスを Azure Standard Load Balancer の背後に配置する場合は、IMDS を使用して、ロード バランサーとインスタンスに関連するメタデータを取得できます。 詳細については、ロード バランサー情報の取得に関する記事を参照してください。

スケジュールされたイベント

IMDS を使用すると、スケジュールされたイベントの状態を取得できます。 その後、ユーザーは、これらのイベントに対して実行する一連のアクションを指定できます。 詳細については、Linux のスケジュールされたイベントまたは Windows のスケジュールされたイベントに関する記事を参照してください。

さまざまな言語のサンプル コード

次の表に、VM 内で各種の言語を使用して IMDS を呼び出す例を示します。

Language
Bash https://github.com/Microsoft/azureimds/blob/master/IMDSSample.sh
C# https://github.com/Microsoft/azureimds/blob/master/IMDSSample.cs
Go https://github.com/Microsoft/azureimds/blob/master/imdssample.go
Java https://github.com/Microsoft/azureimds/blob/master/imdssample.java
NodeJS https://github.com/Microsoft/azureimds/blob/master/IMDSSample.js
Perl https://github.com/Microsoft/azureimds/blob/master/IMDSSample.pl
PowerShell https://github.com/Microsoft/azureimds/blob/master/IMDSSample.ps1
Puppet https://github.com/keirans/azuremetadata
Python https://github.com/Microsoft/azureimds/blob/master/IMDSSample.py
Ruby https://github.com/Microsoft/azureimds/blob/master/IMDSSample.rb

エラーとデバッグ

見つからないデータ要素または無効な形式の要求がある場合、Instance Metadata Service は標準 HTTP エラーを返します。 次に例を示します。

HTTP 状態コード 理由
200 OK 要求は成功しました。
400 Bad Request リーフ ノードのクエリ時に Metadata: true ヘッダーがないか、パラメーター format=json がありません
404 Not Found 要求された要素は存在しません
405 Method Not Allowed このエンドポイントでは、HTTP メソッド (動詞) はサポートされていません。
410 Gone しばらくしてから再試行してください (最長 70 秒)
429 Too Many Requests API の転送率の制限を超えました
500 Service Error しばらくしてからやり直してください

よく寄せられる質問

  • 400 Bad Request, Required metadata header not specified エラーが発生します。 これはどういう意味でしょうか。

    • IMDS では、要求に Metadata: true ヘッダーを渡す必要があります。 このヘッダーを REST 呼び出しに渡すと、IMDS へのアクセスが許可されます。
  • 使用している VM に関するコンピューティング情報を取得できないのはなぜですか。

    • 現在、IMDS では、Azure Resource Manager で作成されたインスタンスのみがサポートされます。
  • しばらく前に Azure Resource Manager で VM を作成しました。 コンピューティング メタデータ情報が表示されないのはなぜですか。

    • 2016 年 9 月以降に VM を作成した場合は、タグを追加して、コンピューティング メタデータの表示を開始してください。 2016 年 9 月より前に VM を作成した場合は、VM インスタンスに対して拡張機能またはデータ ディスクを追加/削除して、メタデータを更新してください。
  • ユーザー データはカスタム データと同じですか?

    • ユーザー データには、カスタム データと同様の機能が用意されているため、独自のメタデータを VM インスタンスに渡すことができます。 違いは、ユーザー データが IMDS を通じて取得され、VM インスタンスの有効期間全体にわたって永続的であることです。 既存のカスタム データ機能は、この記事で説明されているように機能し続けます。 ただし、カスタム データは、IMDS ではなくローカル システム フォルダーからのみ取得できます。
  • 新しいバージョンに入力されたすべてのデータが表示されないのはなぜですか。

    • 2016 年 9 月以降に VM を作成した場合は、タグを追加して、コンピューティング メタデータの表示を開始してください。 2016 年 9 月より前に VM を作成した場合は、VM インスタンスに対して拡張機能またはデータ ディスクを追加/削除して、メタデータを更新してください。
  • エラー 500 Internal Server Error または 410 Resource Gone が発生するのはなぜですか。

    • 要求を再試行してください。 詳細については、「一時的な障害の処理」を参照してください。 問題が解決しない場合は、VM の Azure portal でサポートの問題を作成してください。
  • これは仮想マシン スケール セット インスタンスで機能しますか。

    • はい。IMDS は仮想マシン スケール セット インスタンスで使用できます。
  • 仮想マシン スケール セットでタグを更新しましたが、(単一インスタンスの VM とは異なり) インスタンスにタグが表示されません。 操作方法に何か間違いがありますか。

    • 現時点では、仮想マシン スケール セットのタグは、再起動、再イメージ化、またはインスタンスに対するディスクの変更の際に VM に対してのみ表示されます。
  • VM の SKU 情報が instance/compute 詳細に表示されないのはなぜですか。

    • Azure Marketplace から作成されたカスタム イメージの場合、Azure プラットフォームではカスタム イメージの SKU 情報と、カスタム イメージから作成された VM の詳細は保持されません。 これは仕様であるため、VM instance/compute 詳細には表示されません。
  • サービスの呼び出しの要求がタイムアウトするのはなぜですか。

    • メタデータの呼び出しは、VM のプライマリ ネットワーク カードに割り当てられたプライマリ IP アドレスから行う必要があります。 さらに、ルートを変更した場合、VM のローカル ルーティング テーブルにアドレスが 169.254.169.254/32 のルートが存在する必要があります。

      1. ローカル ルーティング テーブルをダンプし、IMDS エントリを探します。 次に例を示します。
        > route print
        IPv4 Route Table
        ===========================================================================
        Active Routes:
        Network Destination        Netmask          Gateway       Interface  Metric
                0.0.0.0          0.0.0.0      172.16.69.1      172.16.69.7     10
                127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
                127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
        127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
            168.63.129.16  255.255.255.255      172.16.69.1      172.16.69.7     11
        169.254.169.254  255.255.255.255      172.16.69.1      172.16.69.7     11
        ... (continues) ...
        
      2. 169.254.169.254 のルートが存在することを確認し、対応するネットワーク インターフェイス (172.16.69.7 など) をメモします。
      3. インターフェイス構成をダンプし、ルーティング テーブルで参照されているものに対応するインターフェイスを見つけ、MAC (物理) アドレスをメモします。
        > ipconfig /all
        ... (continues) ...
        Ethernet adapter Ethernet:
        
        Connection-specific DNS Suffix  . : xic3mnxjiefupcwr1mcs1rjiqa.cx.internal.cloudapp.net
        Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
        Physical Address. . . . . . . . . : 00-0D-3A-E5-1C-C0
        DHCP Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        Link-local IPv6 Address . . . . . : fe80::3166:ce5a:2bd5:a6d1%3(Preferred)
        IPv4 Address. . . . . . . . . . . : 172.16.69.7(Preferred)
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        ... (continues) ...
        
      4. インターフェイスが VM のプライマリ NIC とプライマリ IP に対応していることを確認します。 Azure portal でネットワーク構成を確認するか、Azure CLI を使用して調べることで、プライマリ NIC および IP を見つけることができます。 プライベート IP (および CLI を使用している場合は MAC アドレス) をメモします。 PowerShell CLI の例を次に示します。
        $ResourceGroup = '<Resource_Group>'
        $VmName = '<VM_Name>'
        $NicNames = az vm nic list --resource-group $ResourceGroup --vm-name $VmName | ConvertFrom-Json | Foreach-Object { $_.id.Split('/')[-1] }
        foreach($NicName in $NicNames)
        {
            $Nic = az vm nic show --resource-group $ResourceGroup --vm-name $VmName --nic $NicName | ConvertFrom-Json
            Write-Host $NicName, $Nic.primary, $Nic.macAddress
        }
        # Output: wintest767 True 00-0D-3A-E5-1C-C0
        
      5. 一致しない場合は、プライマリ NIC および IP がターゲットになるようにルーティング テーブルを更新します。

  • Windows Server でのフェールオーバー クラスタリング

    • フェールオーバー クラスタリングを使用して IMDS に対してクエリを実行する場合は、ルーティング テーブルにルートを追加する必要がある場合があります。 その方法は次のとおりです。

      1. 管理者特権でコマンド プロンプトを開きます。

      2. 次のコマンドを実行し、IPv4 ルーティング テーブルのネットワーク宛先 (0.0.0.0) のインターフェイスのアドレスをメモします。

      route print
      

      注意

      次の出力例は、フェールオーバー クラスターが有効になっている Windows Server VM からのものです。 わかりやすくするために、出力には IPv4 ルート テーブルだけが含まれています。

      IPv4 Route Table
      ===========================================================================
      Active Routes:
      Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0         10.0.1.1        10.0.1.10    266
              10.0.1.0  255.255.255.192         On-link         10.0.1.10    266
              10.0.1.10  255.255.255.255         On-link         10.0.1.10    266
              10.0.1.15  255.255.255.255         On-link         10.0.1.10    266
              10.0.1.63  255.255.255.255         On-link         10.0.1.10    266
              127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
              127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
      127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
          169.254.0.0      255.255.0.0         On-link     169.254.1.156    271
          169.254.1.156  255.255.255.255         On-link     169.254.1.156    271
      169.254.255.255  255.255.255.255         On-link     169.254.1.156    271
              224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
              224.0.0.0        240.0.0.0         On-link     169.254.1.156    271
      255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      255.255.255.255  255.255.255.255         On-link     169.254.1.156    271
      255.255.255.255  255.255.255.255         On-link         10.0.1.10    266
      

      次のコマンドを実行し、ネットワーク宛先 (0.0.0.0) のインターフェイスのアドレスを使用します。この例では 10.0.1.10 です。

      route add 169.254.169.254/32 10.0.1.10 metric 1 -p
      

サポート

複数回試行してもメタデータの応答を取得できない場合は、Azure portal でサポートの問題を作成できます。

製品フィードバック

製品のフィードバックとアイデアは、[Virtual Machines] > [Instance Metadata Service] にあるユーザー フィードバック チャネル (こちら) にお寄せください。

次のステップ