Serviço de metadados de instância do AzureAzure Instance Metadata Service

O serviço de metadados de instância do Azure (IMDS) fornece informações sobre as instâncias de máquina virtual em execução no momento.The Azure Instance Metadata Service (IMDS) provides information about currently running virtual machine instances. Você pode usá-lo para gerenciar e configurar suas máquinas virtuais.You can use it to manage and configure your virtual machines. Essas informações incluem a SKU, o armazenamento, as configurações de rede e os próximos eventos de manutenção.This information includes the SKU, storage, network configurations, and upcoming maintenance events. Para obter uma lista completa dos dados disponíveis, consulte APIs de metadados.For a complete list of the data available, see metadata APIs.

IMDS está disponível para a execução de instâncias de máquinas virtuais (VMs) e instâncias do conjunto de dimensionamento de máquinas virtuais.IMDS is available for running instances of virtual machines (VMs) and virtual machine scale set instances. Todas as APIs dão suporte a VMs criadas e gerenciadas usando Azure Resource Manager.All APIs support VMs created and managed by using Azure Resource Manager. Somente os pontos de extremidade atestados e de rede dão suporte a VMs criadas usando o modelo de implantação clássico.Only the attested and network endpoints support VMs created by using the classic deployment model. O ponto de extremidade atestado faz isso apenas para uma extensão limitada.The attested endpoint does so only to a limited extent.

IMDS é um ponto de extremidade REST que está disponível em um endereço IP conhecido e não roteável ( 169.254.169.254 ).IMDS is a REST endpoint that's available at a well-known, non-routable IP address (169.254.169.254). Você o acessa somente de dentro da VM.You access it only from within the VM. A comunicação entre a VM e a IMDS nunca deixa o host.Communication between the VM and IMDS never leaves the host. Faça com que seus clientes HTTP ignorem proxies da Web na VM ao consultar IMDS e tratem 169.254.169.254 o mesmo que 168.63.129.16 .Have your HTTP clients bypass web proxies within the VM when querying IMDS, and treat 169.254.169.254 the same as 168.63.129.16.

SegurançaSecurity

O ponto de extremidade IMDS é acessível somente de dentro da instância de máquina virtual em execução em um endereço IP não roteável.The IMDS endpoint is accessible only from within the running virtual machine instance on a non-routable IP address. Além disso, qualquer solicitação com um X-Forwarded-For cabeçalho é rejeitada pelo serviço.In addition, any request with an X-Forwarded-For header is rejected by the service. As solicitações também devem conter um Metadata: true cabeçalho, para garantir que a solicitação real tenha sido diretamente intencional e não faça parte do redirecionamento não intencional.Requests must also contain a Metadata: true header, to ensure that the actual request was directly intended and not a part of unintentional redirection.

Importante

IMDS não é um canal para dados confidenciais.IMDS isn't a channel for sensitive data. O ponto de extremidade está aberto para todos os processos na VM.The endpoint is open to all processes on the VM. Considere as informações expostas por meio desse serviço como informações compartilhadas para todos os aplicativos em execução dentro da VM.Consider information exposed through this service as shared information to all applications running inside the VM.

UsoUsage

Acessar o serviço de metadados de instância do AzureAccess Azure Instance Metadata Service

Para acessar o IMDS, crie uma VM de Azure Resource Manager ou o portal do Azuree use os exemplos a seguir.To access IMDS, create a VM from Azure Resource Manager or the Azure portal, and use the following samples. Para obter mais exemplos, consulte exemplos de metadados de instância do Azure.For more examples, see Azure Instance Metadata Samples.

Aqui está o código de exemplo para recuperar todos os metadados de uma instância.Here's the sample code to retrieve all metadata for an instance. Para acessar uma fonte de dados específica, consulte a seção API de metadados .To access a specific data source, see the Metadata API section.

SolicitaçãoRequest

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

Observação

O -NoProxy sinalizador só está disponível no PowerShell 6 ou posterior.The -NoProxy flag is only available in PowerShell 6 or later. Você pode omitir o sinalizador se não tiver uma configuração de proxy.You can omit the flag if you don't have a proxy setup.

RespostaResponse

Observação

A resposta é uma cadeia de caracteres JSON.The response is a JSON string. Redirecione sua consulta REST por meio do ConvertTo-Json cmdlet para uma impressão bonita.Pipe your REST query through the ConvertTo-Json cmdlet for pretty-printing.

{
    "compute": {
        "azEnvironment": "AZUREPUBLICCLOUD",
        "isHostCompatibilityLayerVm": "true",
        "licenseType":  "Windows_Client",
        "location": "westus",
        "name": "examplevmname",
        "offer": "Windows",
        "osProfile": {
            "adminUsername": "admin",
            "computerName": "examplevmname",
            "disablePasswordAuthentication": "true"
        },
        "osType": "linux",
        "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": "Windows-Server-2012-R2-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": "UbuntuServer",
                "publisher": "Canonical",
                "sku": "16.04.0-LTS",
                "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": "Linux",
                "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": ""
    },
    "network": {
        "interface": [{
            "ipv4": {
               "ipAddress": [{
                    "privateIpAddress": "10.144.133.132",
                    "publicIpAddress": ""
                }],
                "subnet": [{
                    "address": "10.144.133.128",
                    "prefix": "26"
                }]
            },
            "ipv6": {
                "ipAddress": [
                 ]
            },
            "macAddress": "0011AAFFBB22"
        }]
    }
}

Saída de dadosData output

Por padrão, IMDS retorna dados no formato JSON ( Content-Type: application/json ).By default, IMDS returns data in JSON format (Content-Type: application/json). No entanto, algumas APIs podem retornar dados em formatos diferentes, se solicitado.However, some APIs can return data in different formats, if requested. A tabela a seguir lista outros formatos de dados aos quais as APIs podem dar suporte.The following table lists other data formats that APIs might support.

APIAPI Formato de dados padrãoDefault data format Outros formatosOther formats
/attested/attested jsonjson nonenone
/Identity/identity jsonjson nonenone
/instance/instance jsonjson texttext
/scheduledevents/scheduledevents jsonjson nonenone

Para acessar um formato de resposta não padrão, especifique o formato solicitado como um parâmetro de cadeia de caracteres de consulta na solicitação.To access a non-default response format, specify the requested format as a query string parameter in the request. Por exemplo:For example:

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

Observação

Para nós folha no /metadata/instance , o format=json não funciona.For leaf nodes in /metadata/instance, the format=json doesn't work. Para essas consultas, format=text precisa ser especificado explicitamente porque o formato padrão é JSON.For these queries, format=text needs to be explicitly specified because the default format is JSON.

VersãoVersion

IMDS tem controle de versão e a especificação da versão da API na solicitação HTTP é obrigatória.IMDS is versioned, and specifying the API version in the HTTP request is mandatory.

As versões de API com suporte são:The supported API versions are:

  • 2017-03-012017-03-01
  • 2017-04-022017-04-02
  • 2017-08-012017-08-01
  • 2017-10-012017-10-01
  • 2017-12-012017-12-01
  • 01-02-20182018-02-01
  • 2018-04-022018-04-02
  • 01-10-20182018-10-01
  • 2019-02-012019-02-01
  • 2019-03-112019-03-11
  • 2019-04-302019-04-30
  • 2019-06-012019-06-01
  • 2019-06-042019-06-04
  • 01-08-20192019-08-01
  • 2019-08-152019-08-15
  • 2019-11-012019-11-01
  • 2020-06-012020-06-01
  • 2020-07-152020-07-15
  • 2020-09-012020-09-01
  • 2020-10-012020-10-01

Observação

A versão 2020-10-01 pode ainda não estar disponível em todas as regiões.Version 2020-10-01 might not yet be available in every region.

Conforme as versões mais recentes forem adicionadas, você ainda poderá acessar versões mais antigas para compatibilidade se seus scripts tiverem dependências em formatos de dados específicos.As newer versions are added, you can still access older versions for compatibility if your scripts have dependencies on specific data formats.

Quando você não especificar uma versão, obterá um erro com uma lista das versões mais recentes com suporte.When you don't specify a version, you get an error, with a list of the newest supported versions.

Observação

A resposta é uma cadeia de caracteres JSON.The response is a JSON string. O exemplo a seguir indica a condição de erro quando a versão não é especificada.The following example indicates the error condition when the version isn't specified. A resposta é bem impressa para facilitar a leitura.The response is pretty-printed for readability.

SolicitaçãoRequest

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/instance

RespostaResponse

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

APIs de metadadosMetadata APIs

IMDS contém várias APIs que representam diferentes fontes de dados.IMDS contains multiple APIs representing different data sources.

APIAPI DescriçãoDescription Versão introduzidaVersion introduced
/attested/attested Ver dados atestadosSee Attested data 01-10-20182018-10-01
/Identity/identity Confira Adquirir um token de acessoSee Acquire an access token 01-02-20182018-02-01
/instance/instance Confira API de instânciaSee Instance API 2017-04-022017-04-02
/scheduledevents/scheduledevents Ver eventos agendadosSee Scheduled events 2017-08-012017-08-01

API de instânciaInstance API

A API de instância expõe os metadados importantes para as instâncias de VM, incluindo a VM, a rede e o armazenamento.Instance API exposes the important metadata for the VM instances, including the VM, network, and storage. Você pode acessar as seguintes categorias por meio de instance/compute :You can access the following categories through instance/compute:

DadosData DescriçãoDescription Versão introduzidaVersion introduced
azEnvironmentazEnvironment O ambiente do Azure no qual a VM está em execução.The Azure environment in which the VM is running. 01-10-20182018-10-01
customDatacustomData Este recurso está desabilitado no momento.This feature is currently disabled. 2019-02-012019-02-01
isHostCompatibilityLayerVmisHostCompatibilityLayerVm Identifica se a VM é executada na camada de compatibilidade do host.Identifies if the VM runs on the Host Compatibility Layer. 2020-06-012020-06-01
licenseTypelicenseType O tipo de licença para benefício híbrido do Azure.The type of license for Azure Hybrid Benefit. Observe que isso está presente apenas para VMs habilitadas para AHB.Note that this is only present for AHB-enabled VMs. 2020-09-012020-09-01
locallocation A região do Azure na qual a VM está em execução.The Azure region in which the VM is running. 2017-04-022017-04-02
namename O nome da VM.The name of the VM. 2017-04-022017-04-02
ofertaoffer Oferece informações para a imagem VM.Offer information for the VM image. Isso está presente apenas para imagens implantadas da Galeria de imagens do Azure.This is only present for images deployed from the Azure image gallery. 2017-04-022017-04-02
osProfile.adminUsernameosProfile.adminUsername Especifica o nome da conta do administrador.Specifies the name of the admin account. 2020-07-152020-07-15
osProfile. ComputerNameosProfile.computerName Especifica o nome do computador.Specifies the name of the computer. 2020-07-152020-07-15
osProfile. disablePasswordAuthenticationosProfile.disablePasswordAuthentication Especifica se a autenticação de senha está desabilitada.Specifies if password authentication is disabled. Observe que isso está presente apenas para VMs Linux.Note that this is only present for Linux VMs. 2020-10-012020-10-01
osTypeosType Linux ou Windows.Linux or Windows. 2017-04-022017-04-02
placementGroupIdplacementGroupId Grupo de posicionamento do conjunto de dimensionamento de máquinas virtuais.Placement group of your virtual machine scale set. 2017-08-012017-08-01
planplan Plano que contém o nome, produto e publicador para uma VM se for uma imagem do Azure Marketplace.Plan containing the name, product, and publisher for a VM if it is an Azure Marketplace image. 2018-04-022018-04-02
platformUpdateDomainplatformUpdateDomain Atualize o domínio no qual a VM está em execução.Update domain in which the VM is running. 2017-04-022017-04-02
platformFaultDomainplatformFaultDomain Domínio de falha no qual a VM está em execução.Fault domain in which the VM is running. 2017-04-022017-04-02
providerprovider O provedor da VM.The provider of the VM. 01-10-20182018-10-01
publicKeyspublicKeys Coleção de chaves públicas atribuídas à VM e aos caminhos.Collection of public keys assigned to the VM and paths. 2018-04-022018-04-02
publicadorpublisher O editor da imagem da VM.The publisher of the VM image. 2017-04-022017-04-02
resourceGroupNameresourceGroupName Grupo de recursos para sua VM.Resource group for your VM. 2017-08-012017-08-01
resourceIdresourceId A ID totalmente qualificada do recurso.The fully qualified ID of the resource. 2019-03-112019-03-11
skusku A SKU específica para a imagem da VM.The specific SKU for the VM image. 2017-04-022017-04-02
securityProfile. secureBootEnabledsecurityProfile.secureBootEnabled Identifica se a inicialização segura UEFI está habilitada na VM.Identifies if UEFI secure boot is enabled on the VM. 2020-06-012020-06-01
securityProfile.virtualTpmEnabledsecurityProfile.virtualTpmEnabled Identifica se o Trusted Platform Module virtual (TPM) está habilitado na VM.Identifies if the virtual Trusted Platform Module (TPM) is enabled on the VM. 2020-06-012020-06-01
storageProfilestorageProfile Consulte perfil de armazenamento.See Storage profile. 2019-06-012019-06-01
subscriptionIdsubscriptionId Assinatura do Azure para a VM.Azure subscription for the VM. 2017-08-012017-08-01
marcastags Marcas para sua VM.Tags for your VM. 2017-08-012017-08-01
tagsListtagsList Marcas formatadas como uma matriz JSON para facilitar a análise programática.Tags formatted as a JSON array for easier programmatic parsing. 2019-06-042019-06-04
versionversion A versão da imagem da VM.The version of the VM image. 2017-04-022017-04-02
vmIdvmId Identificador exclusivo para a VM.Unique identifier for the VM. 2017-04-022017-04-02
vmScaleSetNamevmScaleSetName Nome do conjunto de dimensionamento de máquinas virtuais do conjunto de dimensionamento de máquinas virtuais.Virtual machine scale set name of your virtual machine scale set. 2017-12-012017-12-01
vmSizevmSize Consulte tamanho da VM.See VM size. 2017-04-022017-04-02
zonazone Zona de disponibilidade da VM.Availability Zone of your VM. 2017-12-012017-12-01

Exemplo 1: acompanhar uma VM em execução no AzureSample 1: Track a VM running on Azure

Como um provedor de serviços, talvez seja necessário controlar o número de VMs que executam o software ou ter agentes que precisam controlar a exclusividade da VM.As a service provider, you might need to track the number of VMs running your software, or have agents that need to track uniqueness of the VM. Para poder obter uma ID exclusiva para uma VM, use o vmId campo de IMDS.To be able to get a unique ID for a VM, use the vmId field from IMDS.

SolicitaçãoRequest

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

RespostaResponse

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

Exemplo 2: posicionamento de réplicas de dados diferentesSample 2: Placement of different data replicas

Para determinados cenários nos quais o posicionamento de réplicas diferentes é de vital importância.For certain scenarios, placement of different data replicas is of prime importance. Por exemplo, o posicionamento da réplica do HDFS ou o posicionamento do contêiner por meio de um orquestrador pode exigir que você conheça o platformFaultDomain e platformUpdateDomain a VM esteja em execução.For example, HDFS replica placement or container placement via an orchestrator might require you to know the platformFaultDomain and platformUpdateDomain the VM is running on. Também é possível usar as Zonas de Disponibilidade das instâncias para tomar essas decisões.You can also use Availability Zones for the instances to make these decisions. Você pode consultar esses dados diretamente por meio de IMDS.You can query this data directly via IMDS.

SolicitaçãoRequest

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

RespostaResponse

0

Exemplo 3: obter mais informações sobre a VM durante o caso de suporteSample 3: Get more information about the VM during support case

Como um provedor de serviços, você pode receber uma chamada de suporte onde deseja saber mais sobre a VM.As a service provider, you might get a support call where you want to know more information about the VM. Solicitar que o cliente compartilhe os metadados de computação pode ser útil nesse caso.Asking the customer to share the compute metadata can be useful in this case.

SolicitaçãoRequest

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/instance/compute?api-version=2020-09-01

RespostaResponse

Observação

A resposta é uma cadeia de caracteres JSON.The response is a JSON string. Todas as respostas de exemplo a seguir são estilos de formatação para facilitar a leitura.The following example response is pretty-printed for readability.

{
    "azEnvironment": "AZUREPUBLICCLOUD",
    "isHostCompatibilityLayerVm": "true",
    "licenseType":  "Windows_Client",
    "location": "westus",
    "name": "examplevmname",
    "offer": "Windows",
    "osProfile": {
        "adminUsername": "admin",
        "computerName": "examplevmname",
        "disablePasswordAuthentication": "true"
    },
    "osType": "linux",
    "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": "Windows-Server-2012-R2-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": "UbuntuServer",
            "publisher": "Canonical",
            "sku": "16.04.0-LTS",
            "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": "Linux",
            "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": ""
}

Exemplo 4: obter o ambiente do Azure onde a VM está em execuçãoSample 4: Get the Azure environment where the VM is running

O Azure tem várias nuvens soberanass, como o Azure governamental.Azure has various sovereign clouds, like Azure Government. Às vezes, você precisa do ambiente do Azure para tomar algumas decisões de tempo de execução.Sometimes you need the Azure environment to make some runtime decisions. O exemplo a seguir mostra como você pode gerar tal comportamento.The following sample shows you how you can achieve this behavior.

SolicitaçãoRequest

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

RespostaResponse

AzurePublicCloud

A nuvem e os valores do ambiente do Azure são listados aqui.The cloud and the values of the Azure environment are listed here.

NuvemCloud Ambiente do AzureAzure environment
Todas as regiões globais do Azure geralmente disponíveisAll generally available global Azure regions AzurePublicCloudAzurePublicCloud
Azure GovernamentalAzure Government AzureUSGovernmentCloudAzureUSGovernmentCloud
Azure China 21VianetAzure China 21Vianet AzureChinaCloudAzureChinaCloud
Azure AlemanhaAzure Germany AzureGermanCloudAzureGermanCloud

Metadados de redeNetwork metadata

Os metadados de rede fazem parte da API de instância.Network metadata is part of the instance API. As categorias de rede a seguir estão disponíveis por meio do instance/network ponto de extremidade.The following network categories are available through the instance/network endpoint.

DadosData DescriçãoDescription Versão introduzidaVersion introduced
IPv4/privateIpAddressipv4/privateIpAddress O endereço IPv4 local da VM.The local IPv4 address of the VM. 2017-04-022017-04-02
IPv4/privateIpAddressipv4/publicIpAddress O endereço IPv4 público da VM.The public IPv4 address of the VM. 2017-04-022017-04-02
subnet/addresssubnet/address O endereço de sub-rede da VM.The subnet address of the VM. 2017-04-022017-04-02
subnet/prefixsubnet/prefix O prefixo da sub-rede.The subnet prefix. Exemplo: 24Example: 24 2017-04-022017-04-02
ipv6/ipAddressipv6/ipAddress O endereço IPv6 local da VM.The local IPv6 address of the VM. 2017-04-022017-04-02
macAddressmacAddress O endereço MAC da VM.The VM mac address. 2017-04-022017-04-02

Observação

Todas as respostas de API são cadeias de caracteres JSON.All API responses are JSON strings. Todas as respostas de exemplo a seguir são estilos de formatação para facilitar a leitura.All following example responses are pretty-printed for readability.

Exemplo 1: recuperar informações de redeSample 1: Retrieve network information

SolicitaçãoRequest

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/instance/network?api-version=2017-08-01

RespostaResponse

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

Exemplo 2: recuperar o endereço IP públicoSample 2: Retrieve public IP address

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

Metadados de armazenamentoStorage metadata

Os metadados de armazenamento fazem parte da API da instância, sob o instance/compute/storageProfile ponto de extremidade.Storage metadata is part of the instance API, under the instance/compute/storageProfile endpoint. Fornecem detalhes sobre os discos de armazenamento associados à VM.It provides details about the storage disks associated with the VM.

O perfil de armazenamento de uma VM é dividido em três categorias: referência de imagem, disco do sistema operacional e discos de dados.The storage profile of a VM is divided into three categories: image reference, operating system disk, and data disks.

O objeto de referência de imagem contém as seguintes informações sobre a imagem do sistema operacional:The image reference object contains the following information about the operating system image:

DadosData DescriçãoDescription
idid ID de RecursoResource ID
ofertaoffer Oferta da plataforma ou da imagemOffer of the platform or image
publicadorpublisher Editor de imagemImage publisher
skusku SKU de imagemImage SKU
Versãoversion Versão da plataforma ou imagemVersion of the platform or image

O objeto de disco do sistema operacional contém as seguintes informações sobre o disco do sistema operacional usado pela VM:The operating system disk object contains the following information about the operating system disk used by the VM:

DadosData DescriçãoDescription
cachecaching Requisitos de cacheCaching requirements
createOptioncreateOption Informações sobre como a VM foi criadaInformation about how the VM was created
diffDiskSettingsdiffDiskSettings Configurações do disco efêmeroEphemeral disk settings
diskSizeGBdiskSizeGB Tamanho do disco em GBSize of the disk in GB
encryptionSettingsencryptionSettings Configurações de criptografia do discoEncryption settings for the disk
imageimage Disco rígido virtual de imagem do usuário de origemSource user image virtual hard disk
managedDiskmanagedDisk Parâmetros do disco gerenciadoManaged disk parameters
namename Nome do discoDisk name
osTypeosType Tipo de sistema operacional incluído no discoType of operating system included in the disk
vhdvhd Disco rígido virtualVirtual hard disk
writeAcceleratorEnabledwriteAcceleratorEnabled Se writeAccelerator o está habilitado ou não no discoWhether or not writeAccelerator is enabled on the disk

A matriz de discos de dados contém uma lista dos discos de dados anexada à VM.The data disks array contains a list of data disks attached to the VM. Cada objeto de disco de dados contém as seguintes informações:Each data disk object contains the following information:

DadosData DescriçãoDescription
cachecaching Requisitos de cacheCaching requirements
createOptioncreateOption Informações sobre como a VM foi criadaInformation about how the VM was created
diffDiskSettingsdiffDiskSettings Configurações do disco efêmeroEphemeral disk settings
diskSizeGBdiskSizeGB Tamanho do disco em GBSize of the disk in GB
imageimage Disco rígido virtual de imagem do usuário de origemSource user image virtual hard disk
lunlun Número de unidade lógica do discoLogical unit number of the disk
managedDiskmanagedDisk Parâmetros do disco gerenciadoManaged disk parameters
namename Nome do discoDisk name
vhdvhd Disco rígido virtualVirtual hard disk
writeAcceleratorEnabledwriteAcceleratorEnabled Se writeAccelerator o está habilitado ou não no discoWhether or not writeAccelerator is enabled on the disk

O exemplo a seguir mostra como consultar as informações de armazenamento da VM.The following example shows how to query the VM's storage information.

SolicitaçãoRequest

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/instance/compute/storageProfile?api-version=2019-06-01

RespostaResponse

Observação

A resposta é uma cadeia de caracteres JSON.The response is a JSON string. Todas as respostas de exemplo a seguir são estilos de formatação para facilitar a leitura.The following example response is pretty-printed for readability.

{
    "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": "UbuntuServer",
      "publisher": "Canonical",
      "sku": "16.04.0-LTS",
      "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": "Linux",
      "vhd": {
        "uri": ""
      },
      "writeAcceleratorEnabled": "false"
    }
}

Marcas de VMVM tags

As marcas de VM são incluídas na API de instância, sob o instance/compute/tags ponto de extremidade.VM tags are included the instance API, under the instance/compute/tags endpoint. As marcas podem ter sido aplicadas à sua VM do Azure para organizá-las logicamente em uma taxonomia.Tags might have been applied to your Azure VM to logically organize them into a taxonomy. Você pode recuperar as marcas atribuídas a uma VM usando a solicitação a seguir.You can retrieve the tags assigned to a VM by using the following request.

SolicitaçãoRequest

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

RespostaResponse

Department:IT;Environment:Test;Role:WebRole

O campo tags é uma cadeia de caracteres com as marcas delimitadas por ponto e vírgula.The tags field is a string with the tags delimited by semicolons. Essa saída pode ser um problema se ponto e vírgulas forem usados nas próprias marcas.This output can be a problem if semicolons are used in the tags themselves. Se um analisador for escrito para extrair as marcas programaticamente, você deverá contar com o tagsList campo.If a parser is written to programmatically extract the tags, you should rely on the tagsList field. O tagsList campo é uma matriz JSON sem delimitadores e, consequentemente, é mais fácil de analisar.The tagsList field is a JSON array with no delimiters, and consequently it's easier to parse.

SolicitaçãoRequest

Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/instance/compute/tagsList?api-version=2019-06-04

RespostaResponse

[
  {
    "name": "Department",
    "value": "IT"
  },
  {
    "name": "Environment",
    "value": "Test"
  },
  {
    "name": "Role",
    "value": "WebRole"
  }
]

Dados atestadosAttested data

O IMDS ajuda a fornecer garantias de que os dados fornecidos são provenientes do Azure.IMDS helps to provide guarantees that the data provided is coming from Azure. A Microsoft faz parte dessas informações para que você possa confirmar se uma imagem no Azure Marketplace é aquela que você está executando no Azure.Microsoft signs part of this information, so you can confirm that an image in Azure Marketplace is the one you are running on Azure.

Exemplo 1: obter dados atestadosSample 1: Get attested data

Observação

Todas as respostas de API são cadeias de caracteres JSON.All API responses are JSON strings. As respostas de exemplo a seguir têm estilos de formatação para facilitar a leitura.The following example responses are pretty-printed for readability.

SolicitaçãoRequest

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

Observação

Devido ao mecanismo de cache do IMDS, um valor anteriormente armazenado em cache nonce pode ser retornado.Due to IMDS's caching mechanism, a previously cached nonce value might be returned.

Api-version é um campo obrigatório.Api-version is a mandatory field. Veja a seção de uso para obter as versões de API com suporte.Refer to the usage section for supported API versions. Nonce é uma cadeia de caracteres opcional de 10 dígitos.Nonce is an optional, 10-digit string. Se não for fornecido, IMDS retornará o carimbo de data/hora universal coordenado atual em seu lugar.If it's not provided, IMDS returns the current Coordinated Universal Time timestamp in its place.

RespostaResponse

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

O blob de assinatura é uma versão do documento assinada por PKCS7. Ele contém o certificado usado para assinatura, juntamente com determinados detalhes específicos da VM.It contains the certificate used for signing, along with certain VM-specific details.

Para VMs criadas usando Azure Resource Manager, isso inclui vmId ,, sku , nonce subscriptionId , timeStamp para a criação e expiração do documento e as informações do plano sobre a imagem.For VMs created by using Azure Resource Manager, this includes vmId, sku, nonce, subscriptionId, timeStamp for creation and expiry of the document, and the plan information about the image. As informações do plano são preenchidas apenas para as imagens do Azure Marketplace.The plan information is only populated for Azure Marketplace images.

Para VMs criadas usando o modelo de implantação clássico, somente vmId é garantido que ela seja preenchida.For VMs created by using the classic deployment model, only vmId is guaranteed to be populated. Você pode extrair o certificado da resposta e usá-lo para confirmar que a resposta é válida e proveniente do Azure.You can extract the certificate from the response, and use it to confirm that the response is valid and is coming from Azure.

O documento contém os seguintes campos:The document contains the following fields:

DadosData DescriçãoDescription Versão introduzidaVersion introduced
licenseTypelicenseType Tipo de licença para benefício híbrido do Azure.Type of license for Azure Hybrid Benefit. Observe que isso está presente apenas para VMs habilitadas para AHB.Note that this is only present for AHB-enabled VMs. 2020-09-012020-09-01
noncenonce Uma cadeia de caracteres que pode ser fornecida opcionalmente com a solicitação.A string that can be optionally provided with the request. Se nenhum nonce tiver sido fornecido, o carimbo de data/hora universal coordenado atual será usado.If no nonce was supplied, the current Coordinated Universal Time timestamp is used. 01-10-20182018-10-01
planplan O plano de imagem do Azure Marketplace.The Azure Marketplace Image plan. Contém a ID do plano (nome), a imagem do produto ou a oferta (produto) e a ID do editor (Publicador).Contains the plan ID (name), product image or offer (product), and publisher ID (publisher). 01-10-20182018-10-01
timestamp/createdOntimestamp/createdOn O carimbo de data/hora universal coordenado para quando o documento assinado foi criado.The Coordinated Universal Time timestamp for when the signed document was created. 2018-20-012018-20-01
timestamp/expiresOntimestamp/expiresOn O carimbo de data/hora universal coordenado para quando o documento assinado expira.The Coordinated Universal Time timestamp for when the signed document expires. 01-10-20182018-10-01
vmIdvmId Identificador exclusivo para a VM.Unique identifier for the VM. 01-10-20182018-10-01
subscriptionIdsubscriptionId A assinatura do Azure para a VM.The Azure subscription for the VM. 2019-04-302019-04-30
skusku A SKU específica para a imagem da VM.The specific SKU for the VM image. 2019-11-012019-11-01

Exemplo 2: validar que a VM está em execução no AzureSample 2: Validate that the VM is running in Azure

Os fornecedores no Azure Marketplace querem garantir que seu software seja licenciado para ser executado somente no Azure.Vendors in Azure Marketplace want to ensure that their software is licensed to run only in Azure. Se alguém copiar o VHD para um ambiente local, o fornecedor precisará ser capaz de detectar isso.If someone copies the VHD to an on-premises environment, the vendor needs to be able to detect that. Por meio do IMDS, esses fornecedores podem obter dados assinados que garantem a resposta somente do Azure.Through IMDS, these vendors can get signed data that guarantees response only from Azure.

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

Verifique se a assinatura é de Microsoft Azure e verifique se há erros na cadeia de certificados.Verify that the signature is from Microsoft Azure and check the certificate chain for errors.

# 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

Observação

Devido ao mecanismo de cache do IMDS, um valor anteriormente armazenado em cache nonce pode ser retornado.Due to IMDS's caching mechanism, a previously cached nonce value might be returned.

O nonce no documento assinado pode ser comparado se você forneceu um nonce parâmetro na solicitação inicial.The nonce in the signed document can be compared if you provided a nonce parameter in the initial request.

Observação

O certificado para a nuvem pública e cada nuvem soberanas será diferente.The certificate for the public cloud and each sovereign cloud will be different.

NuvemCloud CertificadoCertificate
Todas as regiões globais do Azure geralmente disponíveisAll generally available global Azure regions *.metadata.azure.com*.metadata.azure.com
Azure GovernamentalAzure Government *.metadata.azure.us*.metadata.azure.us
Azure China 21VianetAzure China 21Vianet *.metadata.azure.cn*.metadata.azure.cn
Azure AlemanhaAzure Germany *.metadata.microsoftazure.de*.metadata.microsoftazure.de

Observação

Os certificados podem não ter uma correspondência exata do metadata.azure.com para a nuvem pública.The certificates might not have an exact match of metadata.azure.com for the public cloud. Por esse motivo, a validação de certificação deve permitir um nome comum de qualquer .metadata.azure.com subdomínio.For this reason, the certification validation should allow a common name from any .metadata.azure.com subdomain.

Nos casos em que o certificado intermediário não pode ser baixado devido a restrições de rede durante a validação, você pode fixar o certificado intermediário.In cases where the intermediate certificate can't be downloaded due to network constraints during validation, you can pin the intermediate certificate. Observe que o Azure passa pelos certificados, que é a prática PKI padrão.Note that Azure rolls over the certificates, which is standard PKI practice. Você precisa atualizar os certificados fixados quando a substituição acontece.You need to update the pinned certificates when rollover happens. Sempre que uma alteração para atualizar o certificado intermediário é planejada, o blog do Azure é atualizado e os clientes do Azure são notificados.Whenever a change to update the intermediate certificate is planned, the Azure blog is updated, and Azure customers are notified.

Você pode encontrar os certificados intermediários no repositório PKI.You can find the intermediate certificates in the PKI repository. Os certificados intermediários de cada uma das regiões podem ser diferentes.The intermediate certificates for each of the regions can be different.

Observação

O certificado intermediário para o Azure China 21Vianet é da CA raiz DigiCert global, em vez de Baltimore.The intermediate certificate for Azure China 21Vianet is from DigiCert Global Root CA, instead of Baltimore. Se você tiver fixado os certificados intermediários para o Azure China como parte de uma alteração de autoridade de cadeia raiz, os certificados intermediários deverão ser atualizados.If you pinned the intermediate certificates for Azure China as part of a root chain authority change, the intermediate certificates must be updated.

Clustering de failover no Windows ServerFailover clustering in Windows Server

Quando você está consultando o IMDS com clustering de failover, às vezes é necessário adicionar uma rota à tabela de roteamento.When you're querying IMDS with failover clustering, it's sometimes necessary to add a route to the routing table. Aqui está como:Here's how:

  1. Abra uma prompt de comando com privilégios de administrador.Open a command prompt with administrator privileges.

  2. Execute o comando a seguir e anote o endereço da interface para destino de rede ( 0.0.0.0 ) na tabela de rotas IPv4.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

Observação

A saída de exemplo a seguir é de uma VM do Windows Server com cluster de failover habilitado.The following example output is from a Windows Server VM with failover cluster enabled. Para simplificar, a saída contém apenas a tabela de rotas IPv4.For simplicity, the output contains only the IPv4 Route Table.

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

Execute o comando a seguir e use o endereço da interface para o destino de rede ( 0.0.0.0 ), que é ( 10.0.1.10 ) neste exemplo.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

Identidade gerenciadaManaged identity

Uma identidade gerenciada, atribuída pelo sistema, pode ser habilitada na VM.A managed identity, assigned by the system, can be enabled on the VM. Você também pode atribuir uma ou mais identidades gerenciadas atribuídas pelo usuário à VM.You can also assign one or more user-assigned managed identities to the VM. Em seguida, você pode solicitar tokens para identidades gerenciadas de IMDS.You can then request tokens for managed identities from IMDS. Use esses tokens para autenticar com outros serviços do Azure, como Azure Key Vault.Use these tokens to authenticate with other Azure services, such as Azure Key Vault.

Para obter as etapas detalhadas para habilitar esse recurso, confira Adquirir um token de acesso.For detailed steps to enable this feature, see Acquire an access token.

Eventos agendadosScheduled events

Você pode obter o status dos eventos agendados usando IMDS.You can obtain the status of the scheduled events by using IMDS. Em seguida, o usuário pode especificar um conjunto de ações a serem executadas sobre esses eventos.Then the user can specify a set of actions to run upon these events. Para obter mais informações, consulte eventos agendados.For more information, see Scheduled events.

Disponibilidade regionalRegional availability

O serviço está geralmente disponível em todas as nuvens do Azure.The service is generally available in all Azure clouds.

Código de exemplo em idiomas diferentesSample code in different languages

A tabela a seguir lista exemplos de como chamar IMDS usando diferentes idiomas dentro da VM:The following table lists samples of calling IMDS by using different languages inside the VM:

LinguagemLanguage ExemploExample
C++ (Windows)C++ (Windows) https://github.com/Microsoft/azureimds/blob/master/IMDSSample-windows.cpp
C#C# https://github.com/Microsoft/azureimds/blob/master/IMDSSample.cs
GoGo https://github.com/Microsoft/azureimds/blob/master/imdssample.go
JavaJava https://github.com/Microsoft/azureimds/blob/master/imdssample.java
NodeJSNodeJS https://github.com/Microsoft/azureimds/blob/master/IMDSSample.js
PerlPerl https://github.com/Microsoft/azureimds/blob/master/IMDSSample.pl
PowerShellPowerShell https://github.com/Microsoft/azureimds/blob/master/IMDSSample.ps1
PuppetPuppet https://github.com/keirans/azuremetadata
PythonPython https://github.com/Microsoft/azureimds/blob/master/IMDSSample.py
RubyRuby https://github.com/Microsoft/azureimds/blob/master/IMDSSample.rb
Visual BasicVisual Basic https://github.com/Microsoft/azureimds/blob/master/IMDSSample.vb

Erros e depuraçãoErrors and debugging

Se houver um elemento de dados não encontrado ou uma solicitação malformada, IMDS retornará os erros HTTP padrão.If there's a data element not found or a malformed request, IMDS returns standard HTTP errors. Por exemplo:For example:

Código de status HTTPHTTP status code MotivoReason
200 OK200 OK
400 Solicitação Inválida400 Bad Request Metadata: trueCabeçalho ausente ou parâmetro ausente format=json ao consultar um nó folha.Missing Metadata: true header, or missing parameter format=json when querying a leaf node.
404 Não Encontrado404 Not Found O elemento solicitado não existe.The requested element doesn't exist.
405 método não permitido405 Method Not Allowed Somente GET as solicitações têm suporte.Only GET requests are supported.
410 não existe mais410 Gone Tente novamente mais uma vez por um máximo de 70 segundos.Retry after some time for a maximum of 70 seconds.
429 Número excessivo de solicitações429 Too Many Requests A API atualmente dá suporte a um máximo de 5 consultas por segundo.The API currently supports a maximum of 5 queries per second.
500 Erro do serviço500 Service Error Tente novamente após algum tempo.Retry after some time.

Perguntas frequentesFrequently asked questions

Estou recebendo o erro 400 Bad Request, Required metadata header not specified . O que isso significa?I am getting the error 400 Bad Request, Required metadata header not specified. What does this mean?

IMDS exige que o cabeçalho Metadata: true seja passado na solicitação.IMDS requires the header Metadata: true to be passed in the request. Passar esse cabeçalho na chamada REST permite o acesso ao IMDS.Passing this header in the REST call allows access to IMDS.

Por que não estou obtendo informações de computação para minha máquina virtual?Why am I not getting compute information for my VM?

Atualmente, o IMDS só dá suporte a instâncias criadas com Azure Resource Manager.Currently, IMDS only supports instances created with Azure Resource Manager.

Eu criei minha VM por Azure Resource Manager algum tempo atrás. Por que não vejo informações de metadados de computação?I created my VM through Azure Resource Manager some time ago. Why am I not seeing compute metadata information?

Se você criou sua VM após setembro de 2016, adicione uma marca para começar a ver os metadados de computação.If you created your VM after September 2016, add a tag to start seeing compute metadata. Se você criou sua VM antes de setembro de 2016, adicione ou remova extensões ou discos de dados para a instância de VM para atualizar os metadados.If you created your VM before September 2016, add or remove extensions or data disks to the VM instance to refresh metadata.

Por que não vejo todos os dados populados para uma nova versão?Why am I not seeing all data populated for a new version?

Se você criou sua VM após setembro de 2016, adicione uma marca para começar a ver os metadados de computação.If you created your VM after September 2016, add a tag to start seeing compute metadata. Se você criou sua VM antes de setembro de 2016, adicione ou remova extensões ou discos de dados para a instância de VM para atualizar os metadados.If you created your VM before September 2016, add or remove extensions or data disks to the VM instance to refresh metadata.

Por que estou recebendo o erro 500 Internal Server Error ou 410 Resource Gone ?Why am I getting the error 500 Internal Server Error or 410 Resource Gone?

Repita a solicitação.Retry your request. Para obter mais informações, consulte tratamento de falhas transitórias.For more information, see Transient fault handling. Se o problema persistir, crie um problema de suporte no portal do Azure para a VM.If the problem persists, create a support issue in the Azure portal for the VM.

Isso funcionaria para instâncias do conjunto de dimensionamento de máquinas virtuais?Would this work for virtual machine scale set instances?

Sim, IMDS está disponível para instâncias do conjunto de dimensionamento de máquinas virtuais.Yes, IMDS is available for virtual machine scale set instances.

Atualizei minhas marcas em conjuntos de dimensionamento de máquinas virtuais, mas elas não aparecem nas instâncias (ao contrário de VMs de instância única). Estou fazendo algo errado?I updated my tags in virtual machine scale sets, but they don't appear in the instances (unlike single instance VMs). Am I doing something wrong?

Atualmente, marcas para conjuntos de dimensionamento de máquinas virtuais mostram apenas para a VM em uma reinicialização, reimagem ou alteração de disco para a instância.Currently tags for virtual machine scale sets only show to the VM on a reboot, reimage, or disk change to the instance.

Por que minha solicitação atingiu o tempo limite para minha chamada para o serviço?Why is my request timed out for my call to the service?

As chamadas de metadados devem ser feitas a partir do endereço IP primário atribuído à placa de rede primária da VM.Metadata calls must be made from the primary IP address assigned to the primary network card of the VM. Além disso, se você alterou suas rotas, deve haver uma rota para o endereço 169.254.169.254/32 na tabela de roteamento local da VM.Additionally, if you've changed your routes, there must be a route for the 169.254.169.254/32 address in your VM's local routing table.

  • Verificando sua tabela de roteamentoVerifying your routing table
    1. Despeje sua tabela de roteamento local e procure a entrada IMDS.Dump your local routing table and look for the IMDS entry. Por exemplo:For example:
      > 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. Verifique se existe uma rota para 169.254.169.254 e anote a interface de rede correspondente (por exemplo, 172.16.69.7 ).Verify that a route exists for 169.254.169.254, and note the corresponding network interface (for example, 172.16.69.7).
    3. Despeje a configuração da interface e localize a interface que corresponde à referida na tabela de roteamento, observando o endereço MAC (físico).Dump the interface configuration and find the interface that corresponds to the one referenced in the routing table, noting the MAC (physical) address.
      > 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. Confirme se a interface corresponde à NIC primária e ao IP primário da VM.Confirm that the interface corresponds to the VM's primary NIC and primary IP. Você pode encontrar a NIC e o IP primário examinando a configuração de rede na portal do Azure ou examinando-a com o CLI do Azure.You can find the primary NIC and IP by looking at the network configuration in the Azure portal, or by looking it up with the Azure CLI. Observe os IPs públicos e privados (e o endereço MAC se você estiver usando a CLI).Note the public and private IPs (and the MAC address if you're using the CLI). Aqui está um exemplo de CLI do PowerShell:Here's a PowerShell CLI example:
      $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. Se eles não corresponderem, atualize a tabela de roteamento para que a NIC primária e o IP sejam direcionados.If they don't match, update the routing table so that the primary NIC and IP are targeted.

SuporteSupport

Se você não conseguir obter uma resposta de metadados após várias tentativas, poderá criar um problema de suporte no portal do Azure.If you aren't able to get a metadata response after multiple attempts, you can create a support issue in the Azure portal. Para tipo de problema, selecione Gerenciamento.For Problem Type, select Management. Para categoria, selecione serviço de metadados de instância.For Category, select Instance Metadata Service.

Captura de tela do suporte ao serviço de metadados de instância

Próximas etapasNext steps

Adquirir um token de acesso para a VMAcquire an access token for the VM

Eventos agendadosScheduled events