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:
- Consultar metadados de forma programática a partir de uma VM
- Veja metadados personalizados para as suas VMs
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
-
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
- 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:
-
Administrador de instâncias do Compute (v1) (
roles/compute.instanceAdmin.v1
) na VM ou no projeto -
Se as suas VMs usarem contas de serviço:
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço ou no projeto
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 ouInvoke-RestMethod
no Windows:- Consulte uma única entrada de metadados
- Consulte uma ficha do diretório de metadados
- Consulte as alterações de metadados através da funcionalidade
wait-for-change
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:
- O ponto final HTTP:
http://metadata.google.internal/computeMetadata/v1
- O ponto final https: (
https://metadata.google.internal/computeMetadata/v1
). Este ponto final https está disponível na pré-visualização. Para ver o formato de consulta do ponto final https, consulte o artigo Consultar metadados através do ponto final do servidor de metadados HTTPS.
- O ponto final HTTP:
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):
Este é o único URL suportado durante a fase de pré-visualização.https://metadata.google.internal/computeMetadata/v1
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
- Estabeleça ligação à sua VM do Linux.
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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/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
-
Para ver a chave de metadados
Windows
- Estabeleça ligação à sua VM do Windows.
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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/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
-
Para ver a chave de metadados
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
Estabeleça ligação à sua VM do Linux.
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 entradadisks/
, conclua os seguintes passos: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/
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
Em seguida, para consultar o tipo de disco (
type
) para discos0/
, 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
-
Para ver a entrada do diretório de metadados do projeto
Windows
A entrada
disks/
é um diretório de discos que está anexado à VM. Para consultar a entrada de discos, conclua os seguintes passos:Estabeleça ligação à sua VM do Windows.
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 entradadisks/
, conclua os seguintes passos: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/
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
Em seguida, para consultar o tipo de disco (
type
) para discos0/
, 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
-
Para ver a entrada do diretório de metadados do projeto
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
Estabeleça ligação à sua VM do Linux.
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
-
Para ver a entrada do diretório de metadados do projeto
Windows
Estabeleça ligação à sua VM do Windows.
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") $valueSubstitua
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
-
Para ver a entrada do diretório de metadados do projeto
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
oualt=text
, que devolvem dados no formato de string JSON ou como uma representação de texto simples, respetivamente.Linux
- Estabeleça ligação à sua VM do Linux.
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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
DATA_FORMAT
: o formato no qual quer os dados de resposta da consulta, por exemplo,text
oujson
.
-
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 consultaalt=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
- Estabeleça ligação à sua VM do Windows.
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") $valueSubstitua 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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
DATA_FORMAT
: o formato no qual quer os dados de resposta da consulta, por exemplo,text
oujson
.
-
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 consultaalt=text
.Consulta predefinida
PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags") $valueO 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") $valueO 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 funcionalidade
wait-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 dewait-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 pedidowait-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
- Estabeleça ligação à sua VM do Linux.
Na VM do Linux, use a ferramenta
curl
para fazer uma consulta. Para fazer um pedidowait-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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/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.
-
Para ver a chave de metadados
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
- Estabeleça ligação à sua VM do Windows.
Na VM do Windows, use o comando
Invoke-RestMethod
para fazer uma consulta. Para fazer um pedidowait-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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/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.
-
Para ver a chave de metadados
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") $valueO 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") $valueO 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 pedidowait-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 pedidowait-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:
- Estabeleça ligação à sua VM do Linux.
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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/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
-
Para ver a chave de metadados
Em seguida, pode usar esse valor ETag com o comando
curl
da ferramenta no seu pedidowait-for-change
. Para usar o valor ETag para o pedidowait-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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
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:
- Estabeleça ligação à sua VM do Windows.
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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/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
-
Para ver a chave de metadados
Em seguida, pode usar esse valor ETag no seu pedido
wait-for-change
. Para usar o valor ETag para o pedidowait-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") $valueSubstitua 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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
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") $valueO 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 com0
como o valor ETag. Quando0
é 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.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âmetrotimeout_sec
. O parâmetrotimeout_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
- Estabeleça ligação à sua VM do Linux.
Na VM do Linux, use a ferramenta
curl
para fazer uma consulta. Para executar um pedidowait-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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
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
- Estabeleça ligação à sua VM do Windows.
Na VM do Windows, use o comando
Invoke-RestMethod
para fazer uma consulta. Para executar um pedidowait-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") $valueSubstitua 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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
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") $valueConsulte 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 comoFALSE
. - 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
Estabeleça ligação à sua VM do Linux.
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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
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
Estabeleça ligação à sua VM do Windows.
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" }
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, especifiqueproject/project-id
. -
Para ver a chave de metadados
image
, que está armazenada nos metadados da instância de VM, especifiqueinstance/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, especifiqueproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
, consoante o seu exemplo de utilização.
-
Para ver a chave de metadados
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
Na Trusted Cloud consola, 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étodoproject.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 projetoZONE
: 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 projetoZONE
: 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
- Na Trusted Cloud consola, aceda à página Instâncias de VM.
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 metadadosblock-project-ssh-keys
éTRUE
nos metadados da instância.Um valor de
Off
indica que o valor da chave de metadadosblock-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étodoinstances.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 projetoZONE
: a zona onde a VM está localizadaVM_NAME
: o nome da VM
O que se segue?
- Saiba mais acerca dos metadados de VMs.
- Saiba como definir metadados personalizados.
- Saiba como definir e consultar atributos de convidados.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-25 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-25 UTC."],[],[],null,[]] -