Azure Instance Metadata ServiceAzure Instance Metadata service

Azure Instance Metadata Service は、実行中の仮想マシン インスタンスに関する情報を提供します。これらの情報を使用して仮想マシンの管理と構成を行うことができます。The Azure Instance Metadata Service provides information about running virtual machine instances that can be used to manage and configure your virtual machines. SKU、ネットワークの構成、今後のメンテナンス イベントなどの情報が含まれます。This includes information such as SKU, network configuration, and upcoming maintenance events. 使用できる情報の種類の詳細については、「メタデータ API」を参照してください。For more information on what type of information is available, see metadata APIs.

Azure Instance Metadata Service は、Azure Resource Manager を使用して作成されたすべての IaaS VM にアクセスできる REST エンドポイントです。Azure's Instance Metadata Service is a REST Endpoint accessible to all IaaS VMs created via the Azure Resource Manager. このエンドポイントは、VM からのみアクセスすることができる、よく知られているルーティング不可能な IP アドレス (169.254.169.254) で使用できます。The endpoint is available at a well-known non-routable IP address (169.254.169.254) that can be accessed only from within the VM.

重要

このサービスは、すべての Azure リージョンで一般公開されています。This service is generally available in all Azure Regions. 仮想マシン インスタンスに関する新しい情報を公開する更新が定期的に行われています。It regularly receives updates to expose new information about virtual machine instances. このページには、使用できる最新のメタデータ API が反映されています。This page reflects the up-to-date metadata APIs available.

サービスの提供状況Service availability

このサービスは、一般公開されている Azure リージョンで使用できます。The service is available in generally available Azure regions. すべての API バージョンが、すべての Azure リージョンで利用可能なわけではありません。Not all API version may be available in all Azure Regions.

リージョンRegions 提供状況Availability? サポートされているバージョンSupported Versions
一般公開されている全世界のすべての Azure リージョンAll Generally Available Global Azure Regions 一般公開Generally Available 2017-04-02、2017-08-01、2017-12-01、2018-02-01、2018-04-02、2018-10-012017-04-02, 2017-08-01, 2017-12-01, 2018-02-01, 2018-04-02, 2018-10-01
Azure GovernmentAzure Government 一般公開Generally Available 2017-04-02、2017-08-01、2017-12-01、2018-02-01、2018-04-02、2018-10-012017-04-02, 2017-08-01, 2017-12-01, 2018-02-01, 2018-04-02, 2018-10-01
Azure ChinaAzure China 一般公開Generally Available 2017-04-02、2017-08-01、2017-12-01、2018-02-01、2018-04-02、2018-10-012017-04-02, 2017-08-01, 2017-12-01, 2018-02-01, 2018-04-02, 2018-10-01
Azure GermanyAzure Germany 一般公開Generally Available 2017-04-02、2017-08-01、2017-12-01、2018-02-01、2018-04-02、2018-10-012017-04-02, 2017-08-01, 2017-12-01, 2018-02-01, 2018-04-02, 2018-10-01
パブリック米国中西部Public West Central US 一般公開Generally Available 2017-04-02、2017-08-01、2017-12-01、2018-02-01、2018-04-02、2018-10-01、2019-02-012017-04-02, 2017-08-01, 2017-12-01, 2018-02-01, 2018-04-02, 2018-10-01, 2019-02-01

この表は、サービスが更新された場合や、バージョンが新しくサポートされた場合に更新されます。This table is updated when there are service updates and or new supported versions are available.

注意

2019-02-01 は現在ロールアウト中であり、間もなく他のリージョンでも利用できるようになります。2019-02-01 is currently getting rolled out and will be available in other regions shortly.

Instance Metadata Service を試すには、上記のリージョンで Azure Resource Manager または Azure ポータルから VM を作成し、この後の例に従います。To try out the Instance Metadata Service, create a VM from Azure Resource Manager or the Azure portal in the above regions and follow the examples below.

使用法Usage

バージョン管理Versioning

インスタンス メタデータ サービスはバージョン管理されています。The Instance Metadata Service is versioned. バージョンは必須であり、Global Azure の現在のバージョンは 2018-10-01 です。Versions are mandatory and the current version on Global Azure is 2018-10-01. 現在サポートされているバージョンは (2017-04-02、2017-08-01、2017-12-01、2018-02-01、2018-04-02、2018-10-01) です。Current supported versions are (2017-04-02, 2017-08-01, 2017-12-01, 2018-02-01, 2018-04-02, 2018-10-01).

新しいバージョンが追加されても、特定のデータ形式への依存関係がスクリプトにある場合、互換性を確保するために古いバージョンにもアクセスできます。As newer versions are added, older versions can still be accessed for compatibility if your scripts have dependencies on specific data formats.

バージョンが指定されていない場合は、最新のサポートされているバージョンの一覧と共にエラーが返されます。When no version is specified, an error is returned with a list of the newest supported versions.

注意

応答は JSON 文字列です。The response is a JSON string. 次の例の応答は、読みやすくするために整えられています。The following example response is pretty-printed for readability.

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance"

応答Response

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

ヘッダーの使用Using headers

Instance Metadata Service のクエリを実行するときは、要求が意図せずリダイレクトされないように、Metadata: true ヘッダーを指定する必要があります。When you query the Instance Metadata Service, you must provide the header Metadata: true to ensure the request was not unintentionally redirected.

メタデータの取得Retrieving metadata

インスタンス メタデータは、Azure Resource Manager を使用して作成/管理されている実行中の VM で使用できます。Instance metadata is available for running VMs created/managed using Azure Resource Manager. 仮想マシン インスタンスのすべてのデータ カテゴリにアクセスするには、次の要求を使用します。Access all data categories for a virtual machine instance using the following request:

curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2017-08-01"

注意

すべてのインスタンス メタデータ クエリでは、大文字小文字が区別されます。All instance metadata queries are case-sensitive.

データ出力Data output

既定では、Instance Metadata Service は JSON 形式でデータを返します (Content-Type: application/json)。By default, the Instance Metadata Service returns data in JSON format (Content-Type: application/json). ただし、要求すれば、別の API から別の形式でデータが返されます。However, different APIs return data in different formats if requested. 次の表は、API がサポートできるその他のデータ形式を示しています。The following table is a reference of other data formats APIs may support.

APIAPI 既定のデータ形式Default Data Format その他の形式Other Formats
/instance/instance jsonjson テキストtext
/scheduledevents/scheduledevents jsonjson なしnone
/attested/attested jsonjson なしnone

既定以外の応答形式にアクセスするには、要求のクエリ文字列パラメーターとして要求の形式を指定します。To access a non-default response format, specify the requested format as a query string parameter in the request. 例: For example:

curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2017-08-01&format=text"

注意

リーフ ノードでは format=json は機能しません。For leaf nodes the format=json doesn't work. これらのクエリでは、既定の形式が json の場合は、format=text を明示的に指定する必要があります。For these queries format=text needs to be explicitly specified if the default format is json.

セキュリティSecurity

Instance Metadata Service エンドポイントには、実行中の仮想マシン インスタンスからのみ、ルーティング不可能な IP アドレスでアクセスできます。The Instance Metadata Service endpoint is accessible only from within the running virtual machine instance on a non-routable IP address. さらに、X-Forwarded-For ヘッダーがあるすべての要求は、サービスによって拒否されます。In addition, any request with a X-Forwarded-For header is rejected by the service. また、実際の要求が意図しないリダイレクトの一部として行われたのではなく、直接意図されたものであったことを明確に示すために、要求に Metadata: trueヘッダーを含める必要があります。Requests must also contain a Metadata: true header to ensure that the actual request was directly intended and not a part of unintentional redirection.

ErrorError

見つからないデータ要素または無効な形式の要求がある場合、Instance Metadata Service は標準 HTTP エラーを返します。If there is a data element not found or a malformed request, the Instance Metadata Service returns standard HTTP errors. For example:For example:

HTTP 状態コードHTTP Status Code 理由Reason
200 OK200 OK
400 Bad Request400 Bad Request リーフ ノードのクエリ時に Metadata: true ヘッダーがないか、その形式になっていません。Missing Metadata: true header or missing the format when querying a leaf node
404 見つかりません404 Not Found 要求された要素は存在しませんThe requested element doesn't exist
405 Method Not Allowed405 Method Not Allowed GET 要求と POST 要求のみがサポートされていますOnly GET and POST requests are supported
429 Too Many Requests429 Too Many Requests 現在 API は、1 秒あたり最大 5 つのクエリをサポートしていますThe API currently supports a maximum of 5 queries per second
500 Service Error500 Service Error しばらくしてからやり直してくださいRetry after some time

Examples

注意

すべての API の応答は、JSON 文字列です。All API responses are JSON strings. 次のすべての例の応答は、読みやすくするために整えられています。All following example responses are pretty-printed for readability.

ネットワーク情報の取得Retrieving network information

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance/network?api-version=2017-08-01"

応答Response

注意

応答は JSON 文字列です。The response is a JSON string. 次の例の応答は、読みやすくするために整えられています。The following example response is pretty-printed for readability.

{
  "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"
    }
  ]
}

パブリック IP アドレスの取得Retrieving public IP address

curl -H Metadata:true "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text"

インスタンスのすべてのメタデータの取得Retrieving all metadata for an instance

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2018-10-01"

応答Response

注意

応答は JSON 文字列です。The response is a JSON string. 次の例の応答は、読みやすくするために整えられています。The following example response is pretty-printed for readability.

{
  "compute": {
    "azEnvironment": "AZUREPUBLICCLOUD",
    "location": "westus",
    "name": "jubilee",
    "offer": "Windows-10",
    "osType": "Windows",
    "placementGroupId": "",
    "plan": {
        "name": "",
        "product": "",
        "publisher": ""
    },
    "platformFaultDomain": "1",
    "platformUpdateDomain": "1",
    "provider": "Microsoft.Compute",
    "publicKeys": [],
    "publisher": "MicrosoftWindowsDesktop",
    "resourceGroupName": "myrg",
    "sku": "rs4-pro",
    "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
    "tags": "Department:IT;Environment:Prod;Role:WorkerRole",
    "version": "17134.345.59",
    "vmId": "13f56399-bd52-4150-9748-7190aae1ff21",
    "vmScaleSetName": "",
    "vmSize": "Standard_D1",
    "zone": "1"
  },
  "network": {
    "interface": [
      {
        "ipv4": {
          "ipAddress": [
            {
              "privateIpAddress": "10.1.2.5",
              "publicIpAddress": "X.X.X.X"
            }
          ],
          "subnet": [
            {
              "address": "10.1.2.0",
              "prefix": "24"
            }
          ]
        },
        "ipv6": {
          "ipAddress": []
        },
        "macAddress": "000D3A36DDED"
      }
    ]
  }
}

Windows 仮想マシンでのメタデータの取得Retrieving metadata in Windows Virtual Machine

要求Request

インスタンス メタデータは、Windows で curl プログラムを使用して取得できます。Instance metadata can be retrieved in Windows via the curl program:

curl -H @{'Metadata'='true'} http://169.254.169.254/metadata/instance?api-version=2018-10-01 | select -ExpandProperty Content

あるいは、Invoke-RestMethod PowerShell コマンドレットで取得できます。Or through the Invoke-RestMethod PowerShell cmdlet:


Invoke-RestMethod -Headers @{"Metadata"="true"} -URI http://169.254.169.254/metadata/instance?api-version=2018-10-01 -Method get

応答Response

注意

応答は JSON 文字列です。The response is a JSON string. 次の例の応答は、読みやすくするために整えられています。The following example response is pretty-printed for readability.

{
  "compute": {
    "azEnvironment": "AZUREPUBLICCLOUD",
    "location": "westus",
    "name": "SQLTest",
    "offer": "SQL2016SP1-WS2016",
    "osType": "Windows",
    "placementGroupId": "",
    "plan": {
        "name": "",
        "product": "",
        "publisher": ""
    },
    "platformFaultDomain": "0",
    "platformUpdateDomain": "0",
    "provider": "Microsoft.Compute",
    "publicKeys": [],
    "publisher": "MicrosoftSQLServer",
    "resourceGroupName": "myrg",
    "sku": "Enterprise",
    "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
    "tags": "Department:IT;Environment:Test;Role:WebRole",
    "version": "13.0.400110",
    "vmId": "453945c8-3923-4366-b2d3-ea4c80e9b70e",
    "vmScaleSetName": "",
    "vmSize": "Standard_DS2",
    "zone": ""
  },
  "network": {
    "interface": [
      {
        "ipv4": {
          "ipAddress": [
            {
              "privateIpAddress": "10.0.1.4",
              "publicIpAddress": "X.X.X.X"
            }
          ],
          "subnet": [
            {
              "address": "10.0.1.0",
              "prefix": "24"
            }
          ]
        },
        "ipv6": {
          "ipAddress": []
        },
        "macAddress": "002248020E1E"
      }
    ]
  }
}

メタデータ APIMetadata APIs

次の API は、メタデータ エンドポイントを通じて使用できます。The following APIs are available through the metadata endpoint:

データData DescriptionDescription 導入されたバージョンVersion Introduced
attestedattested 構成証明済みデータ」をご覧くださいSee Attested Data 2018 年 10 月 1 日2018-10-01
identityidentity Azure リソースのマネージド ID。Managed identities for Azure resources. アクセス トークンの取得」を参照してくださいSee acquire an access token 2018-02-012018-02-01
instanceinstance インスタンス API」を参照してください。See Instance API 2017-04-022017-04-02
scheduledeventsscheduledevents スケジュールされたイベントに関する記事を参照してください。See Scheduled Events 2017-08-012017-08-01

インスタンス APIInstance API

次のコンピューティング カテゴリは、インスタンス API を通じて使用できます。The following Compute categories are available through the Instance API:

注意

次のカテゴリは、メタデータ エンドポイントを通じて、インスタンス/コンピューティングを介してアクセスされます。Through the metadata endpoint, the following categories are accessed through instance/compute

データData DescriptionDescription 導入されたバージョンVersion Introduced
azEnvironmentazEnvironment VM が実行されている Azure 環境Azure Environment where the VM is running in 2018 年 10 月 1 日2018-10-01
customDatacustomData カスタム データ」を参照してください。See Custom Data 2019-02-012019-02-01
locationlocation VM を実行中の Azure リージョンAzure Region the VM is running in 2017-04-022017-04-02
namename VM の名前Name of the VM 2017-04-022017-04-02
offeroffer VM イメージのプラン情報。Offer information for the VM image. この値は、Azure イメージ ギャラリーからデプロイされるイメージにのみ存在します。This value is only present for images deployed from Azure image gallery. 2017-04-022017-04-02
osTypeosType Linux または WindowsLinux or Windows 2017-04-022017-04-02
placementGroupIdplacementGroupId お使いの仮想マシン スケール セットの配置グループPlacement Group of your virtual machine scale set 2017-08-012017-08-01
プランplan VM の Azure Marketplace イメージのプランには、名前、製品、および発行元が含まれていますPlan for a VM in its an Azure Marketplace Image, contains name, product and publisher 2018-04-022018-04-02
platformUpdateDomainplatformUpdateDomain VM を実行中の更新ドメインUpdate domain the VM is running in 2017-04-022017-04-02
platformFaultDomainplatformFaultDomain VM を実行中の障害ドメインFault domain the VM is running in 2017-04-022017-04-02
providerprovider VM のプロバイダーProvider of the VM 2018 年 10 月 1 日2018-10-01
publicKeyspublicKeys VM とパスに割り当てられた公開キーのコレクションCollection of Public Keys assigned to the VM and paths 2018-04-022018-04-02
publisherpublisher VM イメージの発行元Publisher of the VM image 2017-04-022017-04-02
resourceGroupNameresourceGroupName お使いの仮想マシンのリソース グループResource group for your Virtual Machine 2017-08-012017-08-01
skusku VM イメージの特定の SKUSpecific SKU for the VM image 2017-04-022017-04-02
subscriptionIdsubscriptionId 仮想マシンの Azure サブスクリプションAzure subscription for the Virtual Machine 2017-08-012017-08-01
tagstags お使いの仮想マシンのタグTags for your Virtual Machine 2017-08-012017-08-01
versionversion VM イメージのバージョンVersion of the VM image 2017-04-022017-04-02
vmIdvmId VM の一意の識別子Unique identifier for the VM 2017-04-022017-04-02
vmScaleSetNamevmScaleSetName お使いの仮想マシン スケール セットの仮想マシン スケール セット名Virtual Machine ScaleSet Name of your virtual machine scale set 2017-12-012017-12-01
vmSizevmSize VM サイズVM size 2017-04-022017-04-02
ゾーンzone 仮想マシンの可用性ゾーンAvailability Zone of your virtual machine 2017-12-012017-12-01
次のネットワーク カテゴリは、インスタンス API を通じて使用できます。The following Network categories are available through the Instance API:

注意

次のカテゴリは、メタデータ エンドポイントを通じて、インスタンス/ネットワーク/インターフェイスを介してアクセスされます。Through the metadata endpoint, the following categories are accessed through instance/network/interface

データData DescriptionDescription 導入されたバージョンVersion Introduced
ipv4/privateIpAddressipv4/privateIpAddress VM のローカル IPv4 アドレスLocal IPv4 address of the VM 2017-04-022017-04-02
ipv4/publicIpAddressipv4/publicIpAddress VM のパブリック IPv4 アドレスPublic IPv4 address of the VM 2017-04-022017-04-02
subnet/addresssubnet/address VM のサブネット アドレスSubnet address of the VM 2017-04-022017-04-02
subnet/prefixsubnet/prefix サブネットのプレフィックス (24 など)Subnet prefix, example 24 2017-04-022017-04-02
ipv6/ipAddressipv6/ipAddress VM のローカル IPv6 アドレスLocal IPv6 address of the VM 2017-04-022017-04-02
macAddressmacAddress VM の mac アドレスVM mac address 2017-04-022017-04-02

構成証明済みデータAttested Data

Instance Metadata は、169.254.169.254 の http エンドポイントで応答します。Instance Metadata responds at http endpoint on 169.254.169.254. Instance Metadata Service によって提供されるシナリオの一部では、応答データが Azure から送信されたことの保証を提供することです。Part of the scenario served by Instance Metadata Service is to provide guarantees that the data responded is coming from Azure. マーケットプレースのイメージが Azure で実行されるイメージであることを確認できるよう、この情報の一部に署名します。We sign part of this information so that marketplace images can be sure that it's their image running on Azure.

構成証明済みデータの例Example Attested Data

注意

すべての API の応答は、JSON 文字列です。All API responses are JSON strings. 次の例の応答は、読みやすくするために整えられています。The following example responses are pretty-printed for readability.

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/attested/document?api-version=2018-10-01&nonce=1234567890"

api-version は必須フィールドであり、構成証明済みデータに対してサポートされているバージョンは 2018-10-01 です。Api-version is a mandatory field and the version supported for attested data is 2018-10-01. nonce は、提供される省略可能な 10 桁の文字列です。Nonce is an optional 10-digit string provided. nonce を使用して要求を追跡でき、指定しないと、応答では現在の UTC タイムスタンプのエンコードされた文字列が返されます。Nonce can be used to track the request and if not provided, in response encoded string the current UTC timestamp is returned.

応答Response

注意

応答は JSON 文字列です。The response is a JSON string. 次の例の応答は、読みやすくするために整えられています。The following example response is pretty-printed for readability.

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

signature BLOB は、ドキュメントの pkcs7 で署名されたバージョンです。 署名に使用される証明書と共に、ドキュメントの作成と有効期限のための vmId、nonce、timeStamp のような VM の詳細、およびイメージに関するプラン情報が含まれています。 プラン情報は Azure Marketplace のイメージにのみ設定されます。 証明書は、応答から抽出でき、応答が有効で Azure から送られたものであることを検証するために使用できます。The certificate can be extracted from the response and used to validate that the response is valid and is coming from Azure.

Windows 仮想マシンでの構成証明済みメタデータの取得Retrieving attested metadata in Windows Virtual Machine

要求Request

インスタンス メタデータは、Windows で Powershell ユーティリティ curl を使用して取得できます。Instance metadata can be retrieved in Windows via the PowerShell utility curl:

curl -H @{'Metadata'='true'} "http://169.254.169.254/metadata/attested/document?api-version=2018-10-01&nonce=1234567890" | select -ExpandProperty Content

または、Invoke-RestMethod コマンドレットを使用して取得できます。Or through the Invoke-RestMethod cmdlet:

Invoke-RestMethod -Headers @{"Metadata"="true"} -URI "http://169.254.169.254/metadata/attested/document?api-version=2018-10-01&nonce=1234567890" -Method get

api-version は必須フィールドであり、構成証明済みデータに対してサポートされているバージョンは 2018-10-01 です。Api-version is a mandatory field and the version supported for attested data is 2018-10-01. nonce は、提供される省略可能な 10 桁の文字列です。Nonce is an optional 10-digit string provided. nonce を使用して要求を追跡でき、指定しないと、応答では現在の UTC タイムスタンプのエンコードされた文字列が返されます。Nonce can be used to track the request and if not provided, in response encoded string the current UTC timestamp is returned.

応答Response

注意

応答は JSON 文字列です。The response is a JSON string. 次の例の応答は、読みやすくするために整えられています。The following example response is pretty-printed for readability.

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

signature BLOB は、ドキュメントの pkcs7 で署名されたバージョンです。 署名に使用される証明書と共に、ドキュメントの作成と有効期限のための vmId、nonce、timeStamp のような VM の詳細、およびイメージに関するプラン情報が含まれています。 プラン情報は Azure Marketplace のイメージにのみ設定されます。 証明書は、応答から抽出でき、応答が有効で Azure から送られたものであることを検証するために使用できます。The certificate can be extracted from the response and used to validate that the response is valid and is coming from Azure.

使用に関するシナリオ例Example scenarios for usage

Azure で動作している VM の追跡Tracking VM running on Azure

サービス プロバイダーは、ソフトウェアを実行している VM の数を追跡する必要があったり、VM の一意性を追跡する必要のあるエージェントを使用していたりする場合があります。As a service provider, you may require to track the number of VMs running your software or have agents that need to track uniqueness of the VM. VM の一意の ID を取得できるようにするには、Instance Metadata Service から vmId フィールドを使用します。To be able to get a unique ID for a VM, use the vmId field from Instance Metadata Service.

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/vmId?api-version=2017-08-01&format=text"

応答Response

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

障害/更新ドメインに基づくコンテナー、データ パーティションの配置Placement of containers, data-partitions based fault/update domain

特定のシナリオでは、異なるレプリカの配置が非常に重要です。For certain scenarios, placement of different data replicas is of prime importance. たとえば、Orchestrator を介した HDFS レプリカの配置またはコンテナーの配置では、VM が実行されている platformFaultDomainplatformUpdateDomain を把握しておかなければならない場合があります。For example, HDFS replica placement or container placement via an orchestrator may you require to know the platformFaultDomain and platformUpdateDomain the VM is running on. これらの決定を行うために、インスタンスの可用性ゾーンを使用することもできます。You can also use Availability Zones for the instances to make these decisions. このデータは、Instance Metadata Service を使用して直接照会できます。You can query this data directly via the Instance Metadata Service.

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/platformFaultDomain?api-version=2017-08-01&format=text"

応答Response

0

サポート ケースの際の VM に関する詳細情報の取得Getting more information about the VM during support case

サービス プロバイダーとして、VM の詳細情報を得る必要があるサポート コールを受けることがあります。As a service provider, you may get a support call where you would like to know more information about the VM. 顧客にコンピューティング メタデータの共有を依頼すると、サポート担当者が Azure 上の VM の種類を確認するための基本情報を得られる場合があります。Asking the customer to share the compute metadata can provide basic information for the support professional to know about the kind of VM on Azure.

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute?api-version=2017-08-01"

応答Response

注意

応答は JSON 文字列です。The response is a JSON string. 次の例の応答は、読みやすくするために整えられています。The following example response is pretty-printed for readability.

{
  "compute": {
    "location": "CentralUS",
    "name": "IMDSCanary",
    "offer": "RHEL",
    "osType": "Linux",
    "platformFaultDomain": "0",
    "platformUpdateDomain": "0",
    "publisher": "RedHat",
    "sku": "7.2",
    "version": "7.2.20161026",
    "vmId": "5c08b38e-4d57-4c23-ac45-aca61037f084",
    "vmSize": "Standard_DS2"
  }
}

VM が実行されている Azure 環境の取得Getting Azure Environment where the VM is running

Azure には、Azure Government など多数のソブリン クラウドがあります。Azure has various sovereign clouds like Azure Government. ランタイムの決定を行うために、Azure 環境が必要な場合があります。Sometimes you need the Azure Environment to make some runtime decisions. 次の例では、この動作を実現する方法を示します。The following sample shows you how you can achieve this behavior.

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/azEnvironment?api-version=2018-10-01&format=text"

応答Response

AZUREPUBLICCLOUD

VM のタグの取得Getting the tags for the VM

論理的に分類するために Azure VM にタグが適用されている場合があります。Tags may have been applied to your Azure VM to logically organize them into a taxonomy. 次の要求を使用して、VM に割り当てられたタグを取得できます。The tags assigned to a VM can be retrieved by using the request below.

要求Request

curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/tags?api-version=2018-10-01&format=text"

応答Response

Department:IT;Environment:Test;Role:WebRole

注意

タグはセミコロンで区切られます。The tags are semicolon separated. プログラムでタグを抽出するために、パーサーを書き込む場合、パーサーが正常に動作するために、タグ名と値にセミコロンを含めることはできません。If a parser is written to programmatically extract the tags, the tag names and values shouldn't contain semicolons in order for the parser to work correctly.

VM が Azure で実行されていることの検証Validating that the VM is running in Azure

Marketplace ベンダーは、自分たちのソフトウェアが Azure でのみ実行されるようにライセンスされていることを確認することを望みます。Marketplace vendors want to ensure that their software is licensed to run only in Azure. 誰かがオンプレミスの外に VHD をコピーした場合、それを検出する機能が必要です。If someone copies the VHD out to on-premise, then they should have the ability to detect that. Instance Metadata Service を呼び出すことによって、Marketplace ベンダーは、応答が Azure からのみであることを保証する署名付きデータを取得できます。By calling into Instance Metadata Service, Marketplace vendors can get signed data that guarantees response only from Azure.

注意

jq をインストールする必要があります。Requires jq to be installed.

要求Request

 # Get the signature
  curl  --silent -H Metadata:True http://169.254.169.254/metadata/attested/document?api-version=2018-10-01 | jq -r '.["signature"]' > signature
 # Decode the signature
 base64 -d signature > decodedsignature
 #Get PKCS7 format
 openssl pkcs7 -in decodedsignature -inform DER -out sign.pk7
 # Get Public key out of pkc7
 openssl pkcs7 -in decodedsignature -inform DER  -print_certs -out signer.pem
 #Get the intermediate certificate
 wget -q -O intermediate.cer "$(openssl x509 -in signer.pem -text -noout | grep " CA Issuers -" | awk -FURI: '{print $2}')"
 openssl x509 -inform der -in intermediate.cer -out intermediate.pem
 #Verify the contents
 openssl smime -verify -in sign.pk7 -inform pem -noverify

応答Response

Verification successful
{"nonce":"20181128-001617",
  "plan":
    {
     "name":"",
     "product":"",
     "publisher":""
    },
"timeStamp":
  {
    "createdOn":"11/28/18 00:16:17 -0000",
    "expiresOn":"11/28/18 06:16:17 -0000"
  },
"vmId":"d3e0e374-fda6-4649-bbc9-7f20dc379f34"
}
データData 説明Description
noncenonce 要求でのユーザー提供の省略可能な文字列。User supplied optional string with the request. 要求で nonce が提供されなかった場合は、現在の UTC タイムスタンプが返されますIf no nonce was supplied in the request, the current UTC timestamp is returned
プランplan VM の Azure Marketplace イメージのプランには、名前、製品、および発行元が含まれていますPlan for a VM in it's an Azure Marketplace Image, contains name, product, and publisher
timestamp/createdOntimestamp/createdOn 最初の署名付きドキュメントが作成されたタイムスタンプThe timestamp at which the first signed document was created
timestamp/expiresOntimestamp/expiresOn 署名付きドキュメントの有効期限が切れるタイムスタンプThe timestamp at which the signed document expires
vmIdvmId VM の一意の識別子Unique identifier for the VM

署名の検証Verifying the signature

上記の署名を取得した後は、署名が Microsoft からのものであることを確認できます。Once you get the signature above, you can verify that the signature is from Microsoft. また、中間証明書と証明書チェーンも確認できます。Also you can verify the intermediate certificate and the certificate chain.

注意

パブリック クラウド用の証明書とソブリン クラウド用の証明書は異なります。The certificate for Public cloud and sovereign cloud will be different.

リージョンRegions 証明書Certificate
一般公開されている全世界のすべての Azure リージョンAll Generally Available Global Azure Regions metadata.azure.commetadata.azure.com
Azure GovernmentAzure Government metadata.azure.usmetadata.azure.us
Azure ChinaAzure China metadata.azure.cnmetadata.azure.cn
Azure GermanyAzure Germany metadata.microsoftazure.demetadata.microsoftazure.de

# Verify the subject name for the main certificate
openssl x509 -noout -subject -in signer.pem
# Verify the issuer for the main certificate
openssl x509 -noout -issuer -in signer.pem
#Validate the subject name for intermediate certificate
openssl x509 -noout -subject -in intermediate.pem
# Verify the issuer for the intermediate certificate
openssl x509 -noout -issuer -in intermediate.pem
# Verify the certificate chain
openssl verify -verbose -CAfile /etc/ssl/certs/Baltimore_CyberTrust_Root.pem -untrusted intermediate.pem signer.pem

検証時、ネットワークの制約が原因で中間証明書をダウンロードできない場合は、中間証明書をピン留めできます。In cases where the intermediate certificate cannot be downloaded due to network constraints during validation, the intermediate certificate can be pinned. ただし、Azure では、標準 PKI 手順に従って、証明書がロールオーバーされます。However, Azure will roll over the certificates as per standard PKI practice. ピン留めされた証明書は、ロールオーバーの実行時に更新する必要があります。The pinned certificates would need to be updated when roll over happens. 中間証明書を更新する変更を計画すると、そのたびに、Azure ブログが更新され、Azure の顧客に通知されます。Whenever a change to update the intermediate certificate is planned, the Azure blog will be updated and Azure customers will be notified. 中間証明書は、こちらで確認できます。The intermediate certificates can be found here. 中間証明書は、リージョンごとに異なる場合があります。The intermediate certificates for each of the regions can be different.

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

一部のシナリオでは、フェールオーバー クラスタリングで Instance Metadata Service のクエリを実行する際に、ルーティング テーブルにルートを追加する必要があります。For certain scenarios, when querying Instance Metadata Service with Failover Clustering, it is necessary to add a route to the routing table.

  1. 管理者特権でコマンド プロンプトを開きます。Open command prompt with administrator privileges.

  2. 次のコマンドを実行し、IPv4 ルーティング テーブルのネットワーク宛先のインターフェイスのアドレス (0.0.0.0) をメモします。Run the following command and note the address of the Interface for Network Destination (0.0.0.0) in the IPv4 Route Table.

route print

注意

フェールオーバー クラスターが有効になっている Windows Server VM からの次の出力例には、わかりやすくするために IPv4 ルーティング テーブルのみが含まれています。The following example output from a Windows Server VM with Failover Cluster enabled contains only the IPv4 Route Table for simplicity.

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
        224.0.0.0        240.0.0.0         On-link         10.0.1.10    266
  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
  1. 次のコマンドを実行し、IPv4 ルーティング テーブルのネットワーク宛先のインターフェイスのアドレス (0.0.0.0) を使用します。この例では 10.0.1.10 です。Run the following command and use the address of the Interface for Network Destination (0.0.0.0) which is (10.0.1.10) in this example.
route add 169.254.169.254/32 10.0.1.10 metric 1 -p

カスタム データCustom Data

Instance Metadata Service により、VM からそのカスタム データへのアクセスが可能になります。Instance Metadata Service provides the ability for the VM to have access to its custom data. バイナリ データは、64 KB 未満にする必要があります。また、バイナリ データは、Base64 でエンコードされた形式で VM に提供されます。The binary data must be less than 64 KB and is provided to the VM in base64 encoded form. カスタム データを使用する VM の作成方法の詳細については、「Deploy a Virtual Machine with CustomData (カスタム データを使用する仮想マシンのデプロイ)」を参照してください。For details on how to create a VM with custom data, see Deploy a Virtual Machine with CustomData.

カスタム データは、VM 内で実行されているすべてのプロセスで使用できます。Custom data is available to all processes running in the VM. 顧客がカスタム データに機密情報を挿入しないようにすることをお勧めします。It is suggested that customers do not insert secret information into custom data.

仮想マシン内のカスタム データの取得Retrieving custom data in Virtual Machine

Instance Metadata Service によって VM に提供されるカスタム データは、Base64 でエンコードされています。Instance Metadata Service provides custom data to the VM in base64 encoded form. 次の例は、Base64 でエンコードされた文字列をデコードするものです。The following example decodes the base64 encoded string.

注意

この例のカスタム データは、"My custom data." という ASCII 文字列として解釈されます。The custom data in this example is interpreted as an ASCII string that reads, "My custom data.".

要求Request

curl -H "Metadata:true" "http://169.254.169.254/metadata/instance/compute/customData?api-version=2019-02-01&&format=text" | base64 --decode

応答Response

My custom data.

VM 内でさまざまな言語を使用してメタデータ サービスを呼び出す例Examples of calling metadata service using different languages inside the VM

言語Language Example
RubyRuby https://github.com/Microsoft/azureimds/blob/master/IMDSSample.rb
GoGo https://github.com/Microsoft/azureimds/blob/master/imdssample.go
PythonPython https://github.com/Microsoft/azureimds/blob/master/IMDSSample.py
C++C++ https://github.com/Microsoft/azureimds/blob/master/IMDSSample-windows.cpp
C#C# https://github.com/Microsoft/azureimds/blob/master/IMDSSample.cs
JavaScriptJavaScript https://github.com/Microsoft/azureimds/blob/master/IMDSSample.js
PowerShellPowerShell https://github.com/Microsoft/azureimds/blob/master/IMDSSample.ps1
BashBash https://github.com/Microsoft/azureimds/blob/master/IMDSSample.sh
PerlPerl https://github.com/Microsoft/azureimds/blob/master/IMDSSample.pl
JavaJava https://github.com/Microsoft/azureimds/blob/master/imdssample.java
Visual BasicVisual Basic https://github.com/Microsoft/azureimds/blob/master/IMDSSample.vb
PuppetPuppet https://github.com/keirans/azuremetadata

FAQFAQ

  1. 400 Bad Request, Required metadata header not specified エラーが発生します。I am getting the error 400 Bad Request, Required metadata header not specified. これはどういう意味でしょうか。What does this mean?

    • Instance Metadata Service では、要求に Metadata: true ヘッダーを渡す必要があります。The Instance Metadata Service requires the header Metadata: true to be passed in the request. このヘッダーを REST 呼び出しに渡すと、Instance Metadata Service へのアクセスが許可されます。Passing this header in the REST call allows access to the Instance Metadata Service.
  2. 使用している VM に関するコンピューティング情報を取得できないのはなぜですか。Why am I not getting compute information for my VM?

    • 現時点では、Instance Metadata Service は、Azure Resource Manager で作成されたインスタンスのみをサポートします。Currently the Instance Metadata Service only supports instances created with Azure Resource Manager. 今後、クラウド サービス VM に対するサポートが追加される可能性があります。In the future, support for Cloud Service VMs might be added.
  3. 少し前に、Azure Resource Manager を介して仮想マシンを作成しました。I created my Virtual Machine through Azure Resource Manager a while back. コンピューティング メタデータ情報が表示されないのはなぜですか。Why am I not see compute metadata information?

    • 2016 年 9 月以降に作成されたすべての VM については、タグを追加して、コンピューティング メタデータの表示を開始してください。For any VMs created after Sep 2016, add a Tag to start seeing compute metadata. それよりも古い VM (2016 年 9 月よりも前に作成された VM) については、VM に対して拡張機能またはデータ ディスクを追加/削除してメタデータを更新してください。For older VMs (created before Sep 2016), add/remove extensions or data disks to the VM to refresh metadata.
  4. 新しいバージョンに入力されたすべてのデータが表示されません。I am not seeing all data populated for new version

    • 2016 年 9 月以降に作成されたすべての VM については、タグを追加して、コンピューティング メタデータの表示を開始してください。For any VMs created after Sep 2016, add a Tag to start seeing compute metadata. それよりも古い VM (2016 年 9 月よりも前に作成された VM) については、VM に対して拡張機能またはデータ ディスクを追加/削除してメタデータを更新してください。For older VMs (created before Sep 2016), add/remove extensions or data disks to the VM to refresh metadata.
  5. 500 Internal Server Error エラーが発生します。なぜですか。Why am I getting the error 500 Internal Server Error?

    • 指数バックオフ システムに基づいて、要求を再試行してください。Retry your request based on exponential back off system. 問題が解決しない場合は、Azure サポートにお問い合わせください。If the issue persists contact Azure support.
  6. その他の質問/コメントはどこで共有すればいいですか。Where do I share additional questions/comments?

  7. このサービスは仮想マシン スケール セット インスタンスで機能しますか。Would this work for Virtual Machine Scale Set Instance?

    • はい。Metadata Service は、スケール セット インスタンスで利用できます。Yes Metadata service is available for Scale Set Instances.
  8. このサービスのサポートを受けるにはどうすればよいですか。How do I get support for the service?

    • サービスのサポートを受けるには、時間がかかる再試行の後もメタデータの応答を取得できない VM を管理する Azure portal でサポート問題を作成します。To get support for the service, create a support issue in Azure portal for the VM where you are not able to get metadata response after long retries.
  9. サービスの呼び出しの要求がタイムアウトになりました。I get request timed out for my call to the service?

    • メタデータの呼び出しは、VM のネットワーク カードに割り当てられたプライマリ IP アドレスから行う必要があります。また、ルートを変更した場合は、ネットワーク カードからのアドレス 169.254.0.0/16 用のルートが必要です。Metadata calls must be made from the primary IP address assigned to the network card of the VM, in addition in case you have changed your routes there must be a route for 169.254.0.0/16 address out of your network card.
  10. 仮想マシン スケール セットでタグを更新しましたが、VM とは異なり、インスタンスにタグが表示されません。I updated my tags in virtual machine scale set but they don't appear in the instances unlike VMs?

    • 現時点では、スケール セットのタグは、再起動/再イメージ化/インスタンスに対するディスクの変更の際に VM に対してのみ表示されます。Currently for ScaleSets tags only show to the VM on a reboot/reimage/or a disk change to the instance.

    Instance Metadata のサポート

次の手順Next steps