Ver e consultar metadados de VMs

Todas as máquinas virtuais (VMs) armazenam os respetivos metadados em diretórios num servidor de metadados. A sua VM tem automaticamente acesso a esta API do servidor de metadados sem autorização adicional. Pode usar os métodos explicados nas secções seguintes deste documento para ver e consultar os valores dos metadados da VM:

Se encontrar erros ao aceder ao servidor de metadados, reveja o artigo Resolução de problemas de acesso ao servidor de metadados.

Antes de começar

  • Para VMs do Windows Server, use o PowerShell 3.0 ou posterior. Recomendamos que use ctrl+v para colar os blocos de código copiados.
  • Reveja os princípios básicos de como os metadados de VMs do Compute Engine são definidos, categorizados e organizados. Para mais informações, consulte o artigo Acerca dos metadados de VMs.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

    Python

    Para usar os Python exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada.

      Create local authentication credentials for your user account:

      gcloud auth application-default login

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Set up authentication for a local development environment.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Trusted Cloud documentação de autenticação.

Funções necessárias

As seguintes funções e autorizações são necessárias para ver metadados personalizados a partir de fora da VM através da Trusted Cloud consola, da Google Cloud CLI ou da REST. Se estiver a consultar programaticamente os metadados a partir da VM, só precisa das funções e das autorizações para estabelecer ligação à VM.

Para obter as autorizações de que precisa para ver metadados personalizados a partir do exterior da VM, peça ao seu administrador para lhe conceder as seguintes funções de IAM:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para ver metadados personalizados a partir do exterior da VM. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para ver metadados personalizados a partir do exterior da VM:

  • Para ver os metadados personalizados do projeto: compute.projects.get no projeto
  • Para ver metadados zonais personalizados: compute.instanceSettings.get nas definições da instância na zona necessária no projeto
  • Para ver metadados personalizados de uma instância de VM: compute.instances.get na VM
  • Se as suas VMs usarem contas de serviço: iam.serviceAccounts.actAs nas contas de serviço ou no projeto

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Consultar metadados de forma programática

Pode aceder a todos os metadados consultando as entradas de valores de metadados programaticamente a partir de uma VM Linux ou Windows. Na sua VM, pode consultar programaticamente os valores de metadados de uma das seguintes formas, usando ferramentas como curl no Linux ou Invoke-RestMethod no Windows:

Pontos finais do servidor de metadados

Para consultar metadados de forma programática a partir de uma VM, tem os seguintes pontos finais do servidor de metadados:

  • Para todas as VMs, pode consultar o servidor de metadados através do ponto final http (http://metadata.google.internal/computeMetadata/v1) ou do respetivo endereço IP (169.254.169.254). Use o endereço IPv4 mesmo com instâncias apenas IPv6.
  • Para VMs protegidas, pode consultar o servidor de metadados através de um dos seguintes métodos:

A maioria dos exemplos neste documento usa o ponto final http. No entanto, pode aceder a todas as mesmas entradas de metadados, quer use o ponto final https ou http.

Partes de um pedido de metadados

A tabela seguinte resume as principais partes de um pedido de consulta de metadados.

Componentes Descrição
URLs raiz

Todos os valores de metadados são definidos como subcaminhos abaixo dos seguintes URLs raiz:

  • http endpoint:
    • http://metadata.google.internal/computeMetadata/v1
    • http://169.254.169.254/computeMetadata/v1
    • http://metadata.goog/computeMetadata/v1
  • Ponto final https (pré-visualização):
    • https://metadata.google.internal/computeMetadata/v1
      Este é o único URL suportado durante a fase de pré-visualização.
Cabeçalho do pedido

Este cabeçalho indica que o pedido foi enviado com a intenção de obter valores de metadados, em vez de o fazer involuntariamente a partir de uma fonte insegura, e permite que o servidor de metadados devolva os dados que solicitou. Se não fornecer este cabeçalho, o servidor de metadados nega o seu pedido.

Metadata-Flavor: Google

Consulte uma única entrada de metadados

Use os seguintes comandos para consultar uma única entrada de metadados.

Linux

  1. Estabeleça ligação à sua VM do Linux.
  2. Na VM Linux, use a ferramenta curl para fazer uma consulta. Para consultar uma entrada de metadados de uma instância de VM ou de um projeto, execute o seguinte comando:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
    

    Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

    • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
    • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
    • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.

    Por exemplo, para consultar a imagem de arranque da VM, execute a seguinte consulta:

    user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"
    

    O resultado é semelhante ao seguinte:

    projects/rhel-cloud/global/images/rhel-8-v20210122

Windows

  1. Estabeleça ligação à sua VM do Windows.
  2. Na VM do Windows, use o comando Invoke-RestMethod para fazer uma consulta. Para consultar uma entrada de metadados de um projeto ou de uma instância de VM, execute o seguinte comando:

    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY")
    $value
    

    Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

    • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
    • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
    • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.

    Por exemplo, para consultar a imagem de arranque da VM, execute a seguinte consulta:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/image")
    $value
    

    O resultado é semelhante ao seguinte:

    projects/windows-cloud/global/images/windows-server-2019-dc-v20210112

Consultar fichas de diretórios de metadados

Use os seguintes comandos para consultar as fichas do diretório de metadados. As fichas de diretório são entradas de metadados que contêm outras chaves de metadados. Qualquer entrada de metadados que termine com uma barra invertida é uma listagem de diretórios

Linux

  1. Estabeleça ligação à sua VM do Linux.

  2. Para consultar um diretório de metadados de um projeto ou de uma instância de VM, na sua VM do Linux, execute o seguinte comando:

      curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/" -H "Metadata-Flavor: Google"
      

    Substitua PATH_TO_METADATA_DIRECTORY pelo caminho para o diretório de metadados da instância de VM ou do projeto para o qual quer consultar as fichas recursivamente. Por exemplo:

    • Para ver a entrada do diretório de metadados do projeto attributes, o caminho a especificar é project/attributes/.
    • Para ver a entrada do diretório de metadados da instância de VM disks, o caminho a especificar é instance/disks/.

    Por exemplo, considere a entrada disks/, que é um diretório de discos ligados à VM. Para consultar a entrada disks/, conclua os seguintes passos:

    1. Execute o comando curl da ferramenta no diretório de discos.

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
      

      O resultado é semelhante ao seguinte:

      0/
      1/
      2/
      
    2. Se quiser mais informações sobre o diretório 0/ do disco, pode consultar o URL específico desse diretório:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"
      

      O resultado é semelhante ao seguinte:

      device-name
      index
      mode
      type
      
    3. Em seguida, para consultar o tipo de disco (type) para discos 0/, pode executar o seguinte:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"
      

      O resultado é semelhante ao seguinte:

      PERSISTENT
      

Windows

A entrada disks/ é um diretório de discos que está anexado à VM. Para consultar a entrada de discos, conclua os seguintes passos:

  1. Estabeleça ligação à sua VM do Windows.

  2. Para consultar um diretório de metadados de um projeto ou de uma instância de VM, na sua VM do Windows, execute o seguinte comando:

    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/")
    $value
    

    Substitua PATH_TO_METADATA_DIRECTORY pelo caminho para o diretório de metadados da instância de VM ou do projeto para o qual quer consultar as fichas recursivamente. Por exemplo:

    • Para ver a entrada do diretório de metadados do projeto attributes, o caminho a especificar é project/attributes/.
    • Para ver a entrada do diretório de metadados da instância de VM disks, o caminho a especificar é instance/disks/.

    Por exemplo, considere a entrada disks/, que é um diretório de discos ligados à VM. Para consultar a entrada disks/, conclua os seguintes passos:

    1. Use o comando Invoke-RestMethod no diretório de discos.

      PS C:\> 
      $value = (Invoke-RestMethod `
                -Headers @{'Metadata-Flavor' = 'Google'} `
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/")
      $value
      

      O resultado é semelhante ao seguinte:

      0/
      1/
      2/
      
    2. Se quiser mais informações sobre o diretório 0/ do disco, pode consultar o URL específico desse diretório:

      PS C:\> 
      $value = (Invoke-RestMethod `
                -Headers @{'Metadata-Flavor' = 'Google'} `
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/")
      $value
      

      O resultado é semelhante ao seguinte:

      device-name
      index
      mode
      type
      
    3. Em seguida, para consultar o tipo de disco (type) para discos 0/, pode executar o seguinte:

      PS C:\> 
      $value = (Invoke-RestMethod `
                -Headers @{'Metadata-Flavor' = 'Google'} `
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type")
      $value
      

      O resultado é semelhante ao seguinte:

      PERSISTENT
      

Consultar recursivamente fichas de diretórios

Se quiser devolver todo o conteúdo num diretório, use o parâmetro de consulta recursive=true com o seu pedido:

Linux

  1. Estabeleça ligação à sua VM do Linux.

  2. Na VM do Linux, use a ferramenta curl para fazer uma consulta. Para consultar recursivamente as fichas de uma instância de VM ou de um diretório de metadados do projeto, execute o seguinte comando:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true" -H "Metadata-Flavor: Google"
    

    Substitua PATH_TO_METADATA_DIRECTORY pelo caminho para o diretório de metadados da instância de VM ou do projeto para o qual quer consultar as fichas recursivamente. Por exemplo:

    • Para ver a entrada do diretório de metadados do projeto attributes, o caminho a especificar é project/attributes/.
    • Para ver a entrada do diretório de metadados da instância de VM disks, o caminho a especificar é instance/disks/.

    Por exemplo, o comando seguinte consulta recursivamente as listas de metadados da instância para o diretório disks/.

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true" -H "Metadata-Flavor: Google"
      

    O resultado é semelhante ao seguinte:

      [{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"},
      {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"},
      {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]
      

    Por predefinição, os conteúdos recursivos são devolvidos no formato JSON. Se quiser devolver estes conteúdos no formato de texto, anexe o parâmetro de consulta alt=text:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text" -H "Metadata-Flavor: Google"
      

    O resultado é semelhante ao seguinte:

      0/device-name boot
      0/index 0
      0/mode READ_WRITE
      0/type PERSISTENT
      1/device-name persistent-disk-1
      1/index 1
      1/mode READ_WRITE
      1/type PERSISTENT
      2/device-name persistent-disk-1
      2/index 2
      2/mode READ_ONLY
      2/type PERSISTENT
      

Windows

  1. Estabeleça ligação à sua VM do Windows.

  2. Na VM do Windows, use o comando Invoke-RestMethod para fazer uma consulta. Para consultar recursivamente as fichas de um diretório de metadados de um projeto ou de uma instância de VM, execute o seguinte comando:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
                -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true")
      $value
      

    Substitua PATH_TO_METADATA_DIRECTORY pelo caminho para o diretório de metadados da instância de VM ou do projeto para o qual quer consultar as fichas recursivamente. Por exemplo:

    • Para ver a entrada do diretório de metadados do projeto attributes, o caminho a especificar é project/attributes/.
    • Para ver a entrada do diretório de metadados da instância de VM disks, o caminho a especificar é instance/disks/.

    Por exemplo, o comando seguinte consulta recursivamente as listas de metadados da instância para o diretório disks/.

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true")
    $value
    

    O resultado é semelhante ao seguinte:

    [{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"},
    {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"},
    {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]
    

    Por predefinição, os conteúdos recursivos são devolvidos no formato JSON. Se quiser devolver estes conteúdos no formato de texto, anexe o parâmetro de consulta alt=text:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text")
    $value
    

    O resultado é semelhante ao seguinte:

    0/device-name boot
    0/index 0
    0/mode READ_WRITE
    0/type PERSISTENT
    1/device-name persistent-disk-1
    1/index 1
    1/mode READ_WRITE
    1/type PERSISTENT
    2/device-name persistent-disk-1
    2/index 2
    2/mode READ_ONLY
    2/type PERSISTENT
    

Formate o resultado da consulta

Por predefinição, cada ponto final tem um formato predefinido para a resposta. Alguns pontos finais podem devolver dados no formato JSON por predefinição, enquanto outros podem devolver dados como uma string. Pode substituir a especificação do formato de dados predefinido usando os parâmetros de consulta alt=json ou alt=text, que devolvem dados no formato de string JSON ou como uma representação de texto simples, respetivamente.

Linux

  1. Estabeleça ligação à sua VM do Linux.
  2. Na VM do Linux, use a ferramenta curl para fazer uma consulta. Para alterar o formato dos dados de resposta da consulta para uma entrada de metadados de um projeto ou de uma instância de VM, execute o seguinte comando:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
    

    Substitua o seguinte:

    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.
    • DATA_FORMAT: o formato no qual quer os dados de resposta da consulta, por exemplo, text ou json.

Exemplo

Por exemplo, a tags chave devolve automaticamente dados no formato JSON. Em alternativa, pode devolver dados no formato de texto especificando o parâmetro de consulta alt=text.

Consulta predefinida

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
  

O resultado é semelhante ao seguinte:

  ["http-server", "db-client", "app-server", "mysql-server"]
  

Consultar com formatação

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text" -H "Metadata-Flavor: Google"
  

O resultado é semelhante ao seguinte:

  http-server
  db-client
  app-server
  mysql-server

Windows

  1. Estabeleça ligação à sua VM do Windows.
  2. Na VM do Windows, use o comando Invoke-RestMethod para fazer uma consulta. Para alterar o formato dos dados de resposta da consulta para uma instância de VM ou uma entrada de metadados do projeto, execute o seguinte comando:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
                -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT")
      $value
      

    Substitua o seguinte:

    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.
    • DATA_FORMAT: o formato no qual quer os dados de resposta da consulta, por exemplo, text ou json.

Exemplo

Por exemplo, a tags chave devolve automaticamente dados no formato JSON. Em alternativa, pode devolver dados no formato de texto especificando o parâmetro de consulta alt=text.

Consulta predefinida

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags")
  $value
  

O resultado é semelhante ao seguinte:

  ["http-server", "db-client", "app-server", "mysql-server"]
  

Consultar com formatação

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text")
  $value
  

O resultado é semelhante ao seguinte:

  http-server
  db-client
  app-server
  mysql-server

Consulte alterações de metadados através da funcionalidade wait-for-change

Uma vez que os valores dos metadados podem mudar enquanto a sua VM está em execução, o servidor de metadados pode ser notificado das alterações aos metadados através da funcionalidade wait-for-change. Com esta opção, o pedido só devolve um resultado quando os metadados especificados tiverem sido alterados.

Pode usar esta funcionalidade em metadados personalizados ou metadados definidos pelo servidor. Assim, se algo mudar na sua VM ou projeto, ou se alguém atualizar uma entrada de metadados personalizados, pode reagir programaticamente à alteração.

Por exemplo, pode fazer um pedido na chave tags para que o pedido só seja devolvido se o conteúdo dos metadados das etiquetas tiver sido alterado. Quando o pedido é devolvido, fornece o novo valor dessa chave de metadados.

A funcionalidade wait-for-change também lhe permite encontrar correspondências com o seu pedido e definir limites de tempo.

Quando trabalhar com a funcionalidadewait-for-change, tenha em atenção o seguinte:

  • Só pode executar um pedido wait-for-change num ponto final de metadados ou recursivamente nos conteúdos de um diretório. Não pode fazer um pedido de wait-for-change numa ficha de diretório. Se tentar fazê-lo, o servidor de metadados falha o seu pedido e devolve um erro 400 Pedido inválido.

  • Não pode fazer um pedido wait-for-change para um token de conta de serviço. Se tentar fazer um pedido wait-for-change ao URL do token da conta de serviço, o pedido falha imediatamente e devolve um erro 400 Pedido inválido.

Para executar um pedido wait-for-change, consulte uma chave de metadados e anexe o parâmetro de consulta ?wait_for_change=true:

Linux

  1. Estabeleça ligação à sua VM do Linux.
  2. Na VM do Linux, use a ferramenta curl para fazer uma consulta. Para fazer um pedido wait-for-change para uma instância de VM ou uma entrada de metadados do projeto, execute o seguinte comando:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true" -H "Metadata-Flavor: Google"
    

    Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

    • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
    • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
    • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.

    Após uma alteração à chave de metadados especificada, a consulta é devolvida com o novo valor.

Exemplos

Neste exemplo, se for feito um pedido ao setInstanceTags method, o pedido é devolvido com os novos valores:

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true" -H "Metadata-Flavor: Google"
  

O resultado é semelhante ao seguinte:

  http-server
  db-client
  

Também pode executar um pedido wait-for-change recursivamente no conteúdo de um diretório:

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&wait_for_change=true" -H "Metadata-Flavor: Google"
  

O servidor de metadados devolve os novos conteúdos se houver alguma alteração:

  {"foo":"bar","baz":"bat"}
  

Windows

  1. Estabeleça ligação à sua VM do Windows.
  2. Na VM do Windows, use o comando Invoke-RestMethod para fazer uma consulta. Para fazer um pedido wait-for-change para uma entrada de metadados de um projeto ou de uma instância de VM, execute o seguinte comando:

    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true")
    $value
    

    Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

    • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
    • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
    • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.

    Após uma alteração à chave de metadados especificada, a consulta é devolvida com o novo valor.

Exemplos

Após uma alteração à chave de metadados especificada, a consulta é devolvida com o novo valor. Neste exemplo, se for feito um pedido ao setInstanceTags method, o pedido é devolvido com os novos valores:

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true")
  $value
  

O resultado é semelhante ao seguinte:

  http-server
  db-client
  

Também pode executar um pedido wait-for-change recursivamente no conteúdo de um diretório:

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes?recursive=true&wait_for_change=true")
  $value
  

O servidor de metadados devolve os novos conteúdos se houver alguma alteração:

  {"foo":"bar","baz":"bat"}
  

Use ETags

Quando envia uma consulta wait-for-change, o servidor de metadados devolve uma resposta se tiver ocorrido alguma alteração no conteúdo desses metadados. No entanto, existe uma condição de concorrência inerente entre uma atualização de metadados e a emissão de um pedido wait-for-change, pelo que é útil ter uma forma fiável de saber que está a receber o valor de metadados mais recente.

Para ajudar com este processo, pode usar o parâmetro de consulta last_etag, que compara o valor ETag que fornece com o valor ETag guardado no servidor de metadados. Se os valores ETag corresponderem, o pedido wait-for-change é aceite. Se os valores de ETag não corresponderem, isto indica que o conteúdo dos metadados foi alterado desde a última vez que obteve o valor de ETag, e o servidor de metadados devolve imediatamente este valor mais recente.

VMs Linux

Para obter o valor ETag atual de uma chave de metadados, conclua os seguintes passos:

  1. Estabeleça ligação à sua VM do Linux.
  2. Faça um pedido a essa chave e imprima os cabeçalhos. Para o fazer, use a curl ferramenta com a flag -v. Para obter o ETag atual de uma entrada de metadados de projeto ou instância de VM, execute o seguinte comando:

    curl -v "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
    

    Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

    • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
    • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
    • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.

    Por exemplo, o comando seguinte obtém o valor ETag atual para a chave de metadados da instância tags.

      user@myinst:~$ curl -v "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
      

    O resultado é semelhante ao seguinte:

    * About to connect() to metadata port 80 (#0)
    * Trying 169.254.169.254... connected
    * Connected to metadata (169.254.169.254) port 80 (#0)
    > GET /computeMetadata/v1/instance/tags HTTP/1.1
    > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
    > Host: metadata
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Content-Type: application/text
    < ETag: 411261ca6c9e654e
    < Date: Wed, 13 Feb 2013 22:43:45 GMT
    < Server: Metadata Server for VM
    < Content-Length: 26
    < X-XSS-Protection: 1; mode=block
    < X-Frame-Options: SAMEORIGIN
    <
    http-server
    db-client
  3. Em seguida, pode usar esse valor ETag com o comando curl da ferramenta no seu pedido wait-for-change. Para usar o valor ETag para o pedido wait-for-change de metadados de instâncias ou projetos, execute o seguinte comando:

      curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
      

    Substitua o seguinte:

    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.
    • ETAG: o valor ETag da chave de metadados.

    Neste exemplo, o comando seguinte usa o valor ETag para a chave tags e consulta a entrada de metadados da instância.

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e" -H "Metadata-Flavor: Google"
      

    O servidor de metadados corresponde ao valor ETag especificado e, se esse valor mudar, o pedido é devolvido com os novos conteúdos da sua chave de metadados.

VMs do Windows

Para obter o valor ETag atual de uma chave de metadados, conclua os seguintes passos:

  1. Estabeleça ligação à sua VM do Windows.
  2. Faça um pedido a essa chave e imprima os cabeçalhos. No Windows, use o comando Invoke-WebRequest. Para obter o ETag atual de uma entrada de metadados de projeto ou instância de VM, execute o seguinte comando:

      $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} `
      -Uri http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY)

    $value.Headers.ETag

    Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

    • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
    • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
    • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.

    Por exemplo, o comando seguinte obtém o valor ETag atual para a chave de metadados da instância tags.

      PS C:> 
      $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} `
      -Uri http://metadata.google.internal/computeMetadata/v1/instance/tags)

    $value.Headers.ETag

    O resultado é semelhante ao seguinte:

      * About to connect() to metadata port 80 (#0)
      * Trying 169.254.169.254... connected
      * Connected to metadata (169.254.169.254) port 80 (#0)
      > GET /computeMetadata/v1/instance/tags HTTP/1.1
      > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
      > Host: metadata
      > Accept: /
      >
      < HTTP/1.1 200 OK
      < Content-Type: application/text
      < ETag: 411261ca6c9e654e
      < Date: Wed, 13 Feb 2013 22:43:45 GMT
      < Server: Metadata Server for VM
      < Content-Length: 26
      < X-XSS-Protection: 1; mode=block
      < X-Frame-Options: SAMEORIGIN
      <
      http-server
      db-client

  3. Em seguida, pode usar esse valor ETag no seu pedido wait-for-change. Para usar o valor ETag para o pedido wait-for-change de metadados de instância ou de projeto, execute o seguinte comando:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG")
      $value
      

    Substitua o seguinte:

    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.
    • ETAG: o valor ETag da chave de metadados.

    Neste exemplo, o comando seguinte usa o valor ETag para a chave tags e consulta a entrada de metadados da instância.

      PS C:> 
      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e")
      $value
      

    O servidor de metadados corresponde ao valor ETag especificado e, se esse valor mudar, o pedido é devolvido com os novos conteúdos da sua chave de metadados.

Python

O exemplo de Python seguinte mostra como monitorizar programaticamente o servidor de metadados para verificar se existem alterações.

Este exemplo define o ETag inicial como 0. O servidor de metadados não devolve uma resposta com 0 como o valor ETag. Quando 0 é especificado como o último ETag num pedido, o servidor de metadados responde com o valor atual e o ETag. Isto poupa um pouco do código necessário para obter o valor inicial e o ETag.

last_etag = "0"

while True:
    r = requests.get(
        url,
        params={"last_etag": last_etag, "wait_for_change": True},
        headers=METADATA_HEADERS,
    )

    # During maintenance the service can return a 503, so these should
    # be retried.
    if r.status_code == 503:
        time.sleep(1)
        continue
    r.raise_for_status()

    last_etag = r.headers["etag"]

Defina limites de tempo

Se quiser que o seu pedido wait-for-change expire após um determinado número de segundos, pode definir o parâmetro timeout_sec. O parâmetro timeout_sec limita o tempo de espera do seu pedido ao número de segundos especificado, e quando o pedido atinge esse limite, devolve o conteúdo atual da chave de metadados.

Quando define o parâmetro timeout_sec, o pedido é sempre devolvido após o número de segundos especificado, quer o valor dos metadados tenha ou não mudado. Só é possível definir um valor inteiro para o limite de tempo.

Linux

  1. Estabeleça ligação à sua VM do Linux.
  2. Na VM do Linux, use a ferramenta curl para fazer uma consulta. Para executar um pedido wait-for-change com um valor de tempo limite para uma entrada de metadados de um projeto ou de uma instância de VM, execute o seguinte comando:

      curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
      

    Substitua o seguinte:

    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.
    • TIMEOUT: o valor de tempo limite.

Por exemplo, o seguinte comando executa um pedido wait-for-change que está definido para expirar após 360 segundos:

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360" -H "Metadata-Flavor: Google"
  

Windows

  1. Estabeleça ligação à sua VM do Windows.
  2. Na VM do Windows, use o comando Invoke-RestMethod para fazer uma consulta. Para executar um pedido wait-for-change com um valor de tempo limite para uma entrada de metadados de instância ou projeto de VM, execute o seguinte comando:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT")
      $value
      

    Substitua o seguinte:

    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.
    • TIMEOUT: o valor de tempo limite.

Por exemplo, o seguinte comando executa um pedido wait-for-change que está definido para expirar após 360 segundos:

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360")
  $value
  

Consulte metadados através do ponto final do servidor de metadados HTTPS

O ponto final do servidor de metadados HTTPS (https://metadata.google.internal/computeMetadata/v1) oferece segurança adicional para a transmissão de informações entre o servidor de metadados e a VM.

Para usar o ponto final do servidor de metadados HTTPS, a VM tem de cumprir os seguintes requisitos:

  • O ambiente convidado tem de estar em execução na VM.
  • A chave de metadados disable-https-mds-setup para a VM tem de estar definida como FALSE.
  • A VM tem de ser uma VM protegida. Isto deve-se ao facto de o servidor de metadados HTTPS exigir a utilização da interface de firmware extensível unificada (UEFI) e do módulo de plataforma fidedigna virtual (vTPM) para validar certificados.

Para uma vista geral de como as consultas ao ponto final do servidor de metadados HTTPS são processadas, consulte o artigo Ponto final do servidor de metadados HTTPS. Pode executar todas as mesmas consultas ao servidor de metadados, quer use o ponto final https ou http. No entanto, para chamar o ponto final https, tem de especificar o caminho para os certificados de identidade do cliente e, em alguns casos, o certificado de raiz.

Os comandos seguintes demonstram como consultar o servidor de metadados através do ponto final https.

Linux

  1. Estabeleça ligação à sua VM do Linux.

  2. Na VM Linux, use a ferramenta curl para fazer uma consulta e especificar o certificado de identidade do cliente. Opcionalmente, também pode especificar o certificado de raiz.

    curl "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" \
      -E CLIENT_CERTIFICATE \
      [--cacert ROOT_CERTIFICATE] \
      -H "Metadata-Flavor: Google"
    

    Substitua o seguinte:

    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.
    • CLIENT_CERTIFICATE: o caminho para o certificado de identidade do cliente: /run/google-mds-mtls/client.key.
    • Opcional: ROOT_CERTIFICATE: o caminho para o certificado de raiz: /run/google-mds-mtls/root.crt. Tem de especificar este valor se o certificado de raiz não for adicionado ao repositório fidedigno do SO.

    Por exemplo, para consultar a imagem de arranque de uma VM, execute a seguinte consulta:

    user@myinst:~$ 
    curl "https://metadata.google.internal/computeMetadata/v1/instance/image" \
      -E /run/google-mds-mtls/client.key \
      -H "Metadata-Flavor: Google"
    

    O resultado é semelhante ao seguinte:

    projects/rhel-cloud/global/images/rhel-8-v20210122

    Se vir uma mensagem de erro, reveja a documentação de resolução de problemas.

Windows

  1. Estabeleça ligação à sua VM do Windows.

  2. Obtenha o certificado de identidade do cliente com um dos seguintes comandos:

    • $cert = Get-PfxCertificate -FilePath "C:\ProgramData\Google\Compute Engine\mds-mtls-client.key.pfx"
      
    • $cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Issuer -like "google.internal" }
      
  3. Na VM do Windows, use o comando Invoke-RestMethod e especifique o certificado de identidade do cliente para fazer uma consulta.

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} -Certificate CLIENT_CERTIFICATE `
              -Uri "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY")
    $value
    

    Substitua o seguinte:

    • CLIENT_CERTIFICATE: o caminho para o certificado de identidade do cliente na VM. Esta é a variável $cert definida no passo anterior.
    • Substitua PATH_TO_METADATA_ENTRY pelo caminho para a chave de metadados da instância de VM ou do projeto para a qual quer consultar o valor. Se a chave estiver num subdiretório do diretório da instância ou do projeto, certifique-se de que também inclui o subdiretório. Por exemplo:

      • Para ver a chave de metadados project-id, que está armazenada nos metadados do projeto, especifique project/project-id.
      • Para ver a chave de metadados image, que está armazenada nos metadados da instância de VM, especifique instance/image.
      • Para ver o enable-oslogin que pode ser armazenado no subdiretório de atributos dos metadados do projeto ou da instância de VM, especifique project/attributes/enable-oslogin ou instance/attributes/enable-oslogin, consoante o seu exemplo de utilização.

    Por exemplo, para consultar a imagem de arranque de uma VM do Windows Server 2019, execute a seguinte consulta:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} -Certificate $cert `
              -Uri "https://metadata.google.internal/computeMetadata/v1/instance/image")
    $value
    

    O resultado é semelhante ao seguinte:

    projects/windows-cloud/global/images/windows-server-2019-dc-v20210112

Limitações

  • Todos os pedidos que contêm o cabeçalho X-Forwarded-For são rejeitados automaticamente pelo servidor de metadados. Este cabeçalho indica geralmente que o pedido foi feito através de um proxy e pode não ser um pedido feito por um utilizador autorizado. Por motivos de segurança, todos os pedidos deste tipo são rejeitados.

  • Quando usa o comando curl para obter metadados do servidor, tenha em atenção que alguns carateres codificados não são suportados no caminho do pedido. Os carateres codificados só são suportados no caminho da consulta.

    Por exemplo, o seguinte pedido pode não funcionar:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/123456789-compute%40developer.s3ns-system.iam.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    Para que este pedido funcione, tem de substituir o caráter codificado não suportado no caminho do pedido (%40) pelo valor aceite equivalente (@).

    curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/1234567898-compute@developer.s3ns-system.iam.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    A tabela seguinte resume os carateres codificados que não são suportados num caminho de pedido.

    Caráter codificado Valor aceite
    %21
    !
    %24
    $
    %27
    '
    %28
    (
    %29
    )
    %2A
    *
    %2C
    ,
    %40
    @

Códigos de estado

Quando faz um pedido ao servidor de metadados, este devolve códigos de estado HTTP padrão para indicar êxito ou falha. Por vezes, as condições de rede ou os eventos do anfitrião podem fazer com que o servidor de metadados falhe o seu pedido e devolva um código de erro. Nestes casos, deve conceber a sua aplicação para ser tolerante a falhas e para poder reconhecer e processar estes erros.

Para ver uma lista detalhada dos códigos de estado que podem ser devolvidos, consulte o artigo Resolva problemas de códigos de servidor.

Veja os metadados personalizados das suas VMs

Pode ver os valores dos metadados personalizados das suas VMs do Compute Engine de uma das seguintes formas:

Veja os metadados do projeto

Para ver metadados personalizados que se aplicam a todas as VMs no seu projeto, use um dos seguintes métodos.

Consola

  1. Na Trusted Cloud consola, aceda à página Metadados.

    Aceda à página Metadados

    Na página Metadados, é apresentada uma lista de todas as entradas de metadados do projeto personalizados para o seu projeto.

gcloud

Use o comando gcloud compute project-info describe para consultar os metadados do projeto:

gcloud compute project-info describe --flatten="commonInstanceMetadata[]"

O resultado é semelhante ao seguinte:

---
fingerprint: HcSFdS_1_1I=
items:
- key: ssh-keys
  value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ...
kind: compute#metadata

REST

Para consultar os metadados do projeto, crie um pedido GET para o método project.get.

Substitua PROJECT_ID pelo ID do seu projeto.

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID

O resultado é semelhante ao seguinte:

"kind": "compute#project",
"id": "XXXXXXX",
"creationTimestamp": "2018-12-10T08:34:33.616-08:00",
"name": "YOUR_PROJECT",
"commonInstanceMetadata": {
  "kind": "compute#metadata",
  "fingerprint": "XXXXXCdg=",
  "items": [
    {
      "key": "enable-guest-attributes",
      "value": "TRUE"
    },
    {
      "key": "enable-os-inventory",
      "value": "true"
    },
    {
      "key": "enable-osconfig",
      "value": "TRUE"
    },
    {
      "key": "enable-oslogin",
      "value": "TRUE"
    },
    {
      "key": "sshKeys",
      "value": "XXXXX"
    }
  ]
}, ...

Veja os metadados zonais

Para ver metadados personalizados que se aplicam a todas as instâncias de VM numa zona específica de um projeto, use um dos seguintes métodos.

gcloud

Para consultar os metadados zonais personalizados, use o comando gcloud compute project-zonal-metadata describe.

gcloud compute project-zonal-metadata describe \
    --zone=ZONE \
    --project=PROJECT_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • ZONE: a zona para a qual quer ver os metadados zonais.

O resultado é semelhante ao seguinte:

{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
    items: {
      "key-1": "value-1",
      "key-2": "value-2"
    }
  }
}

REST

Para consultar os metadados zonais personalizados, faça um pedido GET ao métodoinstanceSettings().get

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • ZONE: a zona para a qual quer ver os metadados zonais.

O resultado é semelhante ao seguinte:

{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
    items: {
      "key-1": "value-1",
      "key-2": "value-2"
    }
  }
}

Veja os metadados da instância

Para ver metadados que se aplicam a uma única VM no seu projeto, use um dos seguintes métodos.

Consola

  1. Na Trusted Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no nome da VM para a qual quer ver os metadados.

    • Chaves SSH para esta VM. Na secção Segurança e acesso, consulte o campo Chaves SSH.

      • Um valor de None indica que não existem chaves SSH armazenadas nos metadados da instância.

      • Qualquer outro valor indica que existem chaves SSH armazenadas nos metadados da instância.

    • Chaves SSH para um projeto. Na secção Segurança e acesso, veja o campo Bloquear chaves SSH ao nível do projeto.

      • Um valor de On indica que o valor da chave de metadados block-project-ssh-keys é TRUE nos metadados da instância.

      • Um valor de Off indica que o valor da chave de metadados block-project-ssh-keys é FALSE ou que a chave não está definida.

    • Todos os outros metadados personalizados. Veja a secção Metadados personalizados. São apresentadas todas as chaves e valores de metadados personalizados, exceto os metadados de chaves SSH.

gcloud

Use o comando gcloud compute instances describe para consultar os metadados da instância:

gcloud compute instances describe VM_NAME --flatten="metadata[]"

Substitua VM_NAME pelo nome da VM para a qual quer encontrar metadados.

O resultado é semelhante ao seguinte:

---
fingerprint: MTgTJ5m-Cjs=
items:
- key: enable-oslogin
  value: 'true'
kind: compute#metadata

REST

Para consultar metadados de uma VM específica, envie um pedido GET para o método instances.get.

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

O resultado é semelhante ao seguinte:

......
"metadata": {
"kind": "compute#metadata",
"fingerprint": "XXXXXXVo=",
"items": [
  {
    "key": "enable-oslogin",
    "value": "true"
  }
]
},....

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • ZONE: a zona onde a VM está localizada
  • VM_NAME: o nome da VM

O que se segue?