É possível visualizar e consultar valores de metadados das instâncias de computação para configurar aplicativos, gerenciar instâncias de computação, otimizar o desempenho e resolver problemas de configurações. Cada instância de computação no Compute Engine de Cloud de Confiance by S3NSarmazena os metadados em um servidor dedicado. Suas instâncias de computação acessam automaticamente esses metadados pela API do servidor de metadados, sem precisar de autorização extra. Neste documento, mostramos como consultar metadados de maneira programática em uma instância de computação e como visualizar metadados personalizados.
Se você encontrar erros ao acessar o servidor de metadados, consulte Solução de problemas de acesso ao servidor de metadados.
Antes de começar
- Para instâncias do Windows Server, use o
PowerShell 3.0 ou posterior.
Recomendamos que você use
ctrl+vpara colar os blocos de código copiados. - Revise os conceitos básicos de como os metadados de VM para o Compute Engine são definidos, categorizados e organizados. Para mais informações, consulte Sobre metadados da VM.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Cloud de Confiance para acessar serviços Cloud de Confiance by S3NS e APIs, não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
-
Instale a CLI do Google Cloud.
-
Configure a CLI gcloud para usar sua identidade federada.
Para mais informações, consulte Fazer login na CLI gcloud com sua identidade federada.
-
Crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Python
Para usar os exemplos do Python nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
Funções exigidas
Os papéis e as permissões a seguir são necessários para ver metadados personalizados de fora da instância do Compute Engine usando o console Cloud de Confiance , a Google Cloud CLI ou REST. Se você estiver consultando os metadados de maneira programática de dentro da instância de computação, precisará apenas dos papéis e das permissões para se conectar a ela.
Para ter as permissões necessárias para ver metadados personalizados de fora da instância de computação, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Administrador da instância do Compute (v1) (
roles/compute.instanceAdmin.v1) na instância de computação ou no projeto -
Se as instâncias de computação usam contas de serviço:
Usuário da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço ou no projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para ver metadados personalizados de fora da instância de computação. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para ver metadados personalizados de fora da instância de computação:
-
Para ver os metadados personalizados do projeto:
compute.projects.getno projeto -
Para conferir metadados personalizados zonais:
compute.instanceSettings.getnas configurações da instância na zona necessária do projeto -
Para ver metadados personalizados de uma instância de computação:
compute.instances.getna instância de computação -
Se as instâncias de computação usarem contas de serviço:
iam.serviceAccounts.actAsnas contas de serviço ou no projeto
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Consultar metadados programaticamente
É possível acessar todos os metadados consultando as entradas dos valores de metadados
programaticamente em uma instância do Linux ou do Windows. Na sua
instância de computação, é possível consultar programaticamente os valores de metadados de uma das
seguintes maneiras usando ferramentas como curl no Linux ou Invoke-RestMethod
no Windows:
- consultar uma única entrada de metadados;
- consultar uma listagem de diretórios de metadados;
- Receber tokens de acesso específicos do OAuth2
- Consulte alterações de metadados usando o recurso
wait-for-change
Endpoints do servidor de metadados
Para consultar metadados de maneira programática em uma instância de computação, você tem os seguintes endpoints do servidor de metadados:
- Em todas as instâncias de computação, é possível consultar o servidor de metadados usando um dos
seguintes endpoints HTTP:
- O nome do DNS:
http://metadata.google.internal/computeMetadata/v1(recomendado) - O endereço IPv4:
http://169.254.169.254/computeMetadata/v1 - O endereço IPv6 (somente para instâncias somente IPv6):
http://fd20:ce::254/computeMetadata/v1
- O nome do DNS:
Para VMs protegidas, é possível consultar o servidor de metadados usando uma das seguintes opções:
- Os endpoints HTTP de todas as instâncias de computação.
- Os endpoints HTTPS (disponíveis em Pré-lançamento):
- O nome do DNS:
https://metadata.google.internal/computeMetadata/v1(recomendado) - O endereço IPv4:
https://169.254.169.254/computeMetadata/v1 - O endereço IPv6 (somente para instâncias somente IPv6):
https://fd20:ce::254/computeMetadata/v1
- O nome do DNS:
Para ver o formato para consulta do endpoint HTTPS, consulte Consultar metadados usando o endpoint do servidor de metadados HTTPS.
A maioria dos exemplos neste documento usa o endpoint HTTP. No entanto, é possível acessar todas as mesmas entradas de metadados, seja usando o endpoint HTTPS ou HTTP.
Partes de uma solicitação de metadados
A tabela a seguir resume as principais partes de uma solicitação de consulta de metadados.
| Componentes | Descrição |
|---|---|
| URLs raiz | Todos os valores de metadados são definidos como subcaminhos abaixo do seguinte URL raiz:
|
| Cabeçalho da solicitação |
Esse cabeçalho indica que a solicitação foi enviada com a intenção de recuperar valores de metadados, em vez de recuperar involuntariamente de uma fonte insegura e permite que o servidor de metadados retorne os dados solicitados. Se você não fornecer esse cabeçalho, o servidor de metadados negará sua solicitação. Metadata-Flavor: Google |
Consultar uma única entrada de metadados
Use os comandos a seguir para consultar uma única entrada de metadados.
Linux
- Conecte-se à instância do Linux.
Na instância do Linux, use a ferramenta
curlpara fazer uma consulta. Para consultar uma entrada de metadados de instância de computação ou projeto, execute o seguinte comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
Por exemplo, para consultar a imagem de inicialização da instância de computação, execute a seguinte consulta:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"O resultado será o seguinte:
projects/rhel-cloud/global/images/rhel-8-v20210122
-
Para visualizar a chave de metadados
Windows
- Conecte-se à instância de computação do Windows.
Na instância do Windows, use o comando
Invoke-RestMethodpara fazer uma consulta. Para consultar uma instância de computação 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") $valueSubstitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
Por exemplo, para consultar a imagem de inicialização da instância de computação, execute a seguinte consulta:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/image") $valueO resultado será o seguinte:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
-
Para visualizar a chave de metadados
Consultar as listagens do diretório de metadados
Use os comandos a seguir para consultar as listagens do diretório de metadados. As listagens de diretórios são entradas de metadados que contêm outras chaves de metadados. Todas as entradas de metadados com uma barra no final do nome são listagens de diretórios.
Linux
Conecte-se à instância de computação do Linux.
Para consultar uma instância de computação ou um diretório de metadados do projeto, na instância 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_DIRECTORYpelo caminho para a instância de VM ou o diretório de metadados do projeto para o qual você quer consultar as listagens. Por exemplo:-
Para conferir a entrada do diretório de metadados do projeto
attributes, o caminho a ser especificado éproject/attributes/. -
Para acessar a entrada de diretório de metadados da instância de VM
disks, o caminho a ser especificado éinstance/disks/.
Por exemplo, considere a entrada
disks/, que é um diretório de discos anexado à instância de computação. Para consultar a entrada dedisks/, siga estas etapas:Execute o comando
curlferramenta no diretório de discos.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"O resultado será assim:
0/ 1/ 2/
Se você quiser mais informações sobre o diretório
0/do disco, consulte 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 será assim:
device-name index mode type
Em seguida, para consultar o tipo de disco (
type) para discos0/, execute:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"O resultado será assim:
PERSISTENT
-
Para conferir a entrada do diretório de metadados do projeto
Windows
A entrada disks/ é um diretório de discos anexado à instância de
computação. Para consultar a entrada de discos, siga estas etapas:
Conecte-se à instância de computação do Windows.
Para consultar uma instância de computação ou um diretório de metadados do projeto, na instância de computação do Windows, execute o seguinte comando:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/") $valueSubstitua
PATH_TO_METADATA_DIRECTORYpelo caminho para a instância de VM ou o diretório de metadados do projeto para o qual você quer consultar as listagens. Por exemplo:-
Para conferir a entrada do diretório de metadados do projeto
attributes, o caminho a ser especificado éproject/attributes/. -
Para acessar a entrada de diretório de metadados da instância de VM
disks, o caminho a ser especificado éinstance/disks/.
Por exemplo, considere a entrada
disks/, que é um diretório de discos anexado à instância de computação. Para consultar a entrada dedisks/, siga estas etapas:Execute o
Invoke-RestMethodcomando no diretório de discos.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/") $valueO resultado será assim:
0/ 1/ 2/
Se você quiser mais informações sobre o diretório
0/do disco, consulte 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/") $valueO resultado será assim:
device-name index mode type
Em seguida, para consultar o tipo de disco (
type) para discos0/, execute:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type") $valueO resultado será assim:
PERSISTENT
-
Para conferir a entrada do diretório de metadados do projeto
Consultar as listagens de diretórios de maneira recursiva
Se você quiser retornar todo o conteúdo em um diretório, use o parâmetro de consulta recursive=true
com a sua solicitação:
Linux
Conecte-se à instância de computação do Linux.
Na instância de computação do Linux, use a ferramenta
curlpara fazer uma consulta. Para consultar recursivamente as listagens de uma instância de computação 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_DIRECTORYpelo caminho para a instância de VM ou o diretório de metadados do projeto para o qual você quer consultar as listagens. Por exemplo:-
Para conferir a entrada do diretório de metadados do projeto
attributes, o caminho a ser especificado éproject/attributes/. -
Para acessar a entrada de diretório de metadados da instância de VM
disks, o caminho a ser especificado éinstance/disks/.
Por exemplo, o comando a seguir consulta de maneira recursiva as listagens 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 será assim:
[{"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 padrão, o conteúdo recursivo é retornado no formato JSON. Se desejar retornar esses 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 será assim:
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 conferir a entrada do diretório de metadados do projeto
Windows
Conecte-se à instância de computação do Windows.
Na instância de computação do Windows, use o comando
Invoke-RestMethodpara fazer uma consulta. Para consultar recursivamente as listagens de uma instância de computação ou de um diretório 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_DIRECTORY/?recursive=true") $valueSubstitua
PATH_TO_METADATA_DIRECTORYpelo caminho para a instância de VM ou o diretório de metadados do projeto para o qual você quer consultar as listagens. Por exemplo:-
Para conferir a entrada do diretório de metadados do projeto
attributes, o caminho a ser especificado éproject/attributes/. -
Para acessar a entrada de diretório de metadados da instância de VM
disks, o caminho a ser especificado éinstance/disks/.
Por exemplo, o comando a seguir consulta de maneira recursiva as listagens 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") $valueO resultado será assim:
[{"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 padrão, o conteúdo recursivo é retornado no formato JSON. Se desejar retornar esses 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") $valueO resultado será assim:
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 conferir a entrada do diretório de metadados do projeto
Formatar a saída de consulta
Por padrão, cada endpoint tem um formato de resposta predefinido. Em alguns pontos de extremidade, os dados podem ser retornados no formato JSON por padrão. Em outros, eles são retornados como uma string. É possível substituir a especificação de formato de dados padrão
usando os parâmetros de consulta alt=json ou alt=text, que retornam dados no formato de
string JSON ou como uma representação de texto simples, respectivamente.
Linux
- Conecte-se à instância de computação do Linux.
Na instância de computação do Linux, use a ferramenta
curlpara fazer uma consulta. Para mudar o formato de dados da resposta da consulta para uma entrada de metadados do projeto ou de instância de computação, execute o seguinte comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Substitua:
-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar a chave de metadados
DATA_FORMAT: o formato em que você quer os dados de resposta da consulta. Por exemplo,textoujson.
-
Exemplo
Por exemplo, a tecla tags
retorna automaticamente os dados no formato JSON. No entanto, é possível retornar dados em formato de texto
especificando o parâmetro de consulta alt=text.
Consulta padrão
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
O resultado será assim:
["http-server", "db-client", "app-server", "mysql-server"]
Consulta com formatação
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text" -H "Metadata-Flavor: Google"
O resultado será assim:
http-server db-client app-server mysql-server
Windows
- Conecte-se à instância de computação do Windows.
Na instância de computação do Windows, use o comando
Invoke-RestMethodpara fazer uma consulta. Para mudar o formato de dados da resposta da consulta para uma entrada de metadados do projeto ou de instância de computação, 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:
-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar a chave de metadados
DATA_FORMAT: o formato em que você quer os dados de resposta da consulta. Por exemplo,textoujson.
-
Exemplo
Por exemplo, a tecla tags
retorna automaticamente os dados no formato JSON. No entanto, é possível retornar dados em formato de texto
especificando o parâmetro de consulta alt=text.
Consulta padrão
PS C:>
$value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags")
$value
O resultado será assim:
["http-server", "db-client", "app-server", "mysql-server"]
Consulta 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 será o seguinte:
http-server db-client app-server mysql-server
Receber tokens de acesso OAuth2 específicos
Por padrão, quando você consulta o servidor de metadados para um token de acesso OAuth2 do endpoint /computeMetadata/v1/instance/service-accounts/default/token, o token retornado inclui todos os escopos especificados para a conta de serviço ao criar ou atualizar a instância.
Para solicitar um token de acesso com escopo reduzido a escopos específicos e limitados, use o parâmetro de consulta scopes em combinação com o parâmetro de consulta enforce_scopes=true. Os escopos solicitados precisam ser um subconjunto dos escopos especificados para a instância.
Linux
- Conecte-se à instância de computação do Linux.
Na instância de computação do Linux, use a ferramenta
curlpara solicitar um token com escopos limitados:curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=SCOPE_1,SCOPE_2,..." -H "Metadata-Flavor: Google"
Substitua
SCOPE_1,SCOPE_2,...por uma lista separada por vírgulas de escopos do OAuth2.Por exemplo, para solicitar um token com escopo reduzido para acesso somente leitura ao Cloud Storage:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=https://www.googleapis.com/auth/devstorage.read_only" -H "Metadata-Flavor: Google"O resultado será o seguinte:
{ "access_token": "ya29.c....", "expires_in": 3599, "token_type": "Bearer" }
Windows
- Conecte-se à instância de computação do Windows.
Na instância de computação do Windows, use o comando
Invoke-RestMethodpara solicitar um token com escopos limitados:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=SCOPE_1,SCOPE_2,...") $valueSubstitua
SCOPE_1,SCOPE_2,...por uma lista separada por vírgulas de escopos do OAuth2.Por exemplo, para solicitar um token com escopo reduzido para acesso somente leitura ao Cloud Storage:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?enforce_scopes=true&scopes=https://www.googleapis.com/auth/devstorage.read_only") $valueO resultado será o seguinte:
access_token : ya29.c.... expires_in : 3599 token_type : Bearer
Como alternativa, é possível aplicar esse comportamento de redução de escopo a todas as solicitações de token definindo a chave de metadados personalizados enable-access-token-enforce-scopes como true no nível da instância ou do projeto. Se você definir essa chave como true, o servidor de metadados vai reduzir automaticamente o escopo de qualquer solicitação de token que inclua o parâmetro scopes, mesmo que a solicitação não inclua enforce_scopes=true.
Consulte alterações de metadados usando o recurso wait-for-change
Os valores de metadados podem mudar durante a execução da instância de computação. Por isso, o servidor de metadados pode ser notificado sobre alterações de metadados usando o recurso wait-for-change. Com essa opção, a solicitação só retornará uma
saída quando os metadados especificados tiverem sido alterados.
Use esse recurso em metadados personalizados ou definidos pelo servidor. Assim, se houver alteração na sua instância de computação ou no seu projeto ou se alguém atualizar uma entrada de metadado personalizado, você poderá reagir à mudança de maneira programática.
Por exemplo, é possível executar uma
solicitação na chave tags para que a solicitação seja retornada apenas se o conteúdo dos
metadados das tags tiver sido alterado. Quando a solicitação é respondida, ela retorna o novo valor dessa chave de metadados.
O recurso wait-for-change também permite fazer correspondência com a solicitação e
definir tempos limites.
Ao trabalhar com o recurso wait-for-change, considere o seguinte:
Só é possível executar uma solicitação
wait-for-changeem um endpoint de metadados ou de maneira recursiva no conteúdo de um diretório. Não é possível executar uma solicitaçãowait-for-changeem uma listagem de diretórios. Se você tentar fazer isso, o servidor de metadados falhará na solicitação e retornará um erro 400 Solicitação inválida.Não é possível executar uma solicitação
wait-for-changepara um token de conta de serviço. Se você tentar enviar uma solicitaçãowait-for-changeao URL do token da conta de serviço, ela falhará imediatamente e retornará um erro 400 Solicitação inválida.
Para executar uma solicitação wait-for-change, consulte uma chave de metadados e anexe o
parâmetro de consulta ?wait_for_change=true:
Linux
- Conecte-se à instância de computação do Linux.
Na instância de computação do Linux, use a ferramenta
curlpara fazer uma consulta. Para executar uma solicitaçãowait-for-changepara uma instância de computação ou 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_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
Depois que a chave de metadados especificada é alterada, a consulta retorna o novo valor.
-
Para visualizar a chave de metadados
Exemplos
Neste exemplo, se uma solicitação for feita para setInstanceTags method, a
solicitação retornará 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 será assim:
http-server db-client
Também é possível executar uma solicitação wait-for-change de maneira recursiva 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"
Quando houver alterações, o servidor de metadados retorna o novo conteúdo:
{"foo":"bar","baz":"bat"}
Windows
- Conecte-se à instância de computação do Windows.
Na instância de computação do Windows, use o comando
Invoke-RestMethodpara fazer uma consulta. Para executar uma solicitaçãowait-for-changeem uma entrada de metadados de instância de computação 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") $valueSubstitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
Depois que a chave de metadados especificada é alterada, a consulta retorna o novo valor.
-
Para visualizar a chave de metadados
Exemplos
Depois que a chave de metadados especificada é alterada, a consulta retorna o novo valor. Neste exemplo, se uma solicitação for feita para
setInstanceTags method, a solicitação retornará 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 será assim:
http-server db-client
Também é possível executar uma solicitação wait-for-change de maneira recursiva 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
Quando houver alterações, o servidor de metadados retorna o novo conteúdo:
{"foo":"bar","baz":"bat"}
Usar ETags
Quando você envia uma consulta wait-for-change simples, o servidor de metadados retorna uma
resposta se algo tiver sido alterado no conteúdo desses metadados. No entanto,
há uma disputa inerente entre uma atualização de metadados e uma
solicitação wait-for-change que está sendo emitida. Por isso é útil ter uma maneira confiável
de saber que você está recebendo o valor de metadados mais recente.
Para ajudar com isso, é possível usar o parâmetro de consulta last_etag, que compara o valor da ETag fornecido com o valor da ETag salvo no servidor de metadados. Se
os valores das ETag corresponderem, a solicitação wait-for-change será aceita. Caso contrário, isso indica que o conteúdo dos metadados foi alterado após a última recuperação do valor de ETag, e o valor mais recente é retornado imediatamente no servidor de metadados.
Linux
Para receber o valor atual da ETag de uma chave de metadados, siga estas etapas:
- Conecte-se à instância de computação do Linux.
Faça uma solicitação para essa chave e imprima os cabeçalhos. Para fazer isso, use a ferramenta
curlcom a flag-v: Para receber a ETag atual de uma entrada de metadados do projeto ou de uma instância de computação, execute o seguinte comando:curl -v "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
Por exemplo, o comando a seguir recebe o valor atual da ETag 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 será assim:
* 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 visualizar a chave de metadados
Em seguida, use esse valor de ETag com o comando ferramenta
curlna sua solicitaçãowait-for-change: Para usar o valor da ETag para a solicitaçãowait-for-changedos metadados de instância ou projeto, 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:
-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar a chave de metadados
ETAG: o valor da ETag da chave de metadados.
Neste exemplo, o comando a seguir usa o valor da ETag para a chave
tagse 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 da ETag especificado e, se esse valor for alterado, a solicitação retornará com o novo conteúdo da chave de metadados.
-
Windows
Para receber o valor atual da ETag de uma chave de metadados, siga estas etapas:
- Conecte-se à instância de computação do Windows.
Faça uma solicitação para essa chave e imprima os cabeçalhos. No Windows, use o
Invoke-WebRequestcomando. Para receber a ETag atual de uma entrada de metadados do projeto ou de uma instância de computação, 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_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
Por exemplo, o comando a seguir recebe o valor atual da ETag 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 será assim:
* 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 visualizar a chave de metadados
Em seguida, use esse valor de ETag na solicitação
wait-for-change. Para usar o valor da ETag para a solicitaçãowait-for-changedos metadados de instância ou 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:
-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar a chave de metadados
ETAG: o valor da ETag da chave de metadados.
Neste exemplo, o comando a seguir usa o valor da ETag para a chave
tagse 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 da ETag especificado e, se esse valor for alterado, a solicitação retornará com o novo conteúdo da chave de metadados.
-
Python
Na amostra de Python a seguir, veja como monitorar o servidor de metadados programaticamente para verificar se houve alterações.
Nesta amostra, a ETag inicial foi definida como 0. O servidor de metadados não
retorna uma resposta com 0 como o valor da ETag. Quando 0 for especificado como a última ETag
em uma solicitação, o servidor de metadados responderá com o valor atual e a ETag. Isso poupa um pouco do código necessário para conseguir o valor e a ETag iniciais.
Definir limites de tempo
Se você quiser que a solicitação wait-for-change expire após um determinado
número de segundos, defina o parâmetro timeout_sec. O parâmetro timeout_sec
limita o tempo de espera da solicitação ao número de segundos especificado
e, quando a solicitação atinge esse limite,
retorna o conteúdo atual da chave de metadados.
Quando você define o parâmetro timeout_sec, a solicitação sempre retorna após o número especificado de segundos, independentemente de o valor dos metadados ter sido alterado ou não. O tempo limite só pode ser definido com um valor inteiro.
Linux
- Conecte-se à instância de computação do Linux.
Na instância de computação do Linux, use a ferramenta
curlpara fazer uma consulta. Para executar uma solicitaçãowait-for-changecom um valor de tempo limite para uma entrada de metadados da instância de computação ou de projeto, 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:
-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar a chave de metadados
TIMEOUT: o valor de tempo limite.
-
Por exemplo, o comando a seguir executa uma solicitação wait-for-change configurada
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
- Conecte-se à instância de computação do Windows.
Na instância de computação do Windows, use o comando
Invoke-RestMethodpara fazer uma consulta. Para executar uma solicitaçãowait-for-changecom um valor de tempo limite para uma entrada de metadados da instância de computação ou do 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&timeout_sec=TIMEOUT") $valueSubstitua:
-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar a chave de metadados
TIMEOUT: o valor de tempo limite.
-
Por exemplo, o comando a seguir executa uma solicitação wait-for-change configurada
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
Consultar metadados usando o endpoint do servidor de metadados HTTPS
O endpoint do servidor de metadados HTTPS (https://metadata.google.internal/computeMetadata/v1) oferece mais
segurança para a transmissão de informações entre o servidor de metadados e a instância de computação.
Para usar o endpoint do servidor de metadados HTTPS, a instância de computação precisa atender aos seguintes requisitos:
- O ambiente convidado precisa estar em execução na instância de computação.
- A chave de metadados
disable-https-mds-setupda instância de computação precisa ser definida comoFALSE. - A instância de computação precisa ser uma VM protegida. Isso ocorre porque o servidor de metadados HTTPS exige o uso da interface de firmware unificada e extensível (UEFI) e do módulo de plataforma confiável virtual (vTPM) para verificar certificados.
Para saber como as consultas ao endpoint do servidor de metadados HTTPS são tratadas, consulte Endpoint do servidor de metadados HTTPS. É possível realizar todas as mesmas consultas ao servidor de metadados, seja usando o endpoint HTTPS ou HTTP. No entanto, para chamar o endpoint HTTPS, é necessário especificar o caminho para os certificados de identidade do cliente e, em alguns casos, o certificado raiz.
Os comandos a seguir demonstram como consultar o servidor de metadados usando o endpoint HTTPS.
Linux
Conecte-se à instância de computação do Linux.
Na instância de computação do Linux, use a ferramenta
curlpara fazer uma consulta e especificar o certificado de identidade do cliente. Como opção, também é possível especificar o certificado raiz.curl "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" \ -E CLIENT_CERTIFICATE \ [--cacert ROOT_CERTIFICATE] \ -H "Metadata-Flavor: Google"
Substitua:
-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar 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 raiz:/run/google-mds-mtls/root.crt. É necessário especificar esse valor se o certificado raiz não for adicionado ao repositório de confiança do SO.
Por exemplo, para consultar a imagem de inicialização de uma instância de computação, 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 será o seguinte:
projects/rhel-cloud/global/images/rhel-8-v20210122
Se uma mensagem de erro for exibida, consulte documentação de solução de problemas.
-
Windows
Conecte-se à instância de computação do Windows.
Receba o certificado de identidade do cliente usando 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 instância de computação do Windows, use o comando
Invoke-RestMethode 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") $valueSubstitua:
CLIENT_CERTIFICATE: o caminho para o certificado de identidade do cliente na instância de computação. Essa é a variável$certdefinida na etapa anterior.-
Substitua
PATH_TO_METADATA_ENTRYpelo caminho a instância de VM ou a chave de metadados do projeto em que você quer consultar o valor. Se a chave estiver em um subdiretório da instância ou do projeto, verifique se para incluir também o subdiretório. Por exemplo:-
Para visualizar a chave de metadados
project-id, que é armazenada em metadados do projeto, especifiqueproject/project-id. -
Para acessar a chave de metadados
image, que está armazenada nos metadados de instância de VM, especifiqueinstance/image. -
Para conferir o
enable-oslogin, que pode ser armazenado no arquivo atribui um subdiretório dos metadados do projeto ou da instância de VM, especifiqueproject/attributes/enable-osloginouinstance/attributes/enable-oslogin, dependendo do caso de uso.
-
Para visualizar a chave de metadados
Por exemplo, para consultar a imagem de inicialização de uma instância 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") $valueO resultado será o seguinte:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
Limitações
Todas as solicitações com o cabeçalho
X-Forwarded-Forsão automaticamente rejeitadas pelo servidor de metadados. Isso ocorre porque, em geral, esse cabeçalho é usado para indicar que a solicitação foi enviada por proxy, ou seja, talvez ela não tenha sido feita por um usuário autorizado. Por motivos de segurança, todas as solicitações desse tipo são rejeitadas.Quando você usa o comando
curlpara recuperar metadados do servidor, observe que alguns caracteres codificados não são aceitos no caminho da solicitação. Caracteres codificados são aceitos apenas no caminho da consulta.Por exemplo, esta solicitação 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 ela funcione, substitua o caractere codificado não aceito no caminho da solicitação (
%40) pelo valor equivalente aceito (@).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 a seguir resume os caracteres codificados que não são aceitos em um caminho de solicitação.
Caractere codificado Valor aceito %21 !
%24 $
%27 '
%28 (
%29 )
%2A *
%2C ,
%40 @
Códigos de status
Quando você faz uma solicitação ao servidor de metadados, ele retorna códigos de status HTTP padrão para indicar sucesso ou falha. Às vezes, as condições da rede ou eventos do host podem fazer com que o servidor de metadados falhe ao responder sua solicitação e retorne um código de erro. Se esse for o caso, desenvolva seu aplicativo para ser tolerante a falhas, reconhecer e tratar esses erros.
Para uma lista detalhada dos códigos de status que podem ser retornados, consulte Resolver problemas de códigos de servidor.
Conferir os metadados personalizados das suas instâncias de computação
É possível visualizar os valores de metadados personalizados para suas instâncias do Compute Engine de uma das seguintes maneiras:
Ver metadados do projeto
Para ver metadados personalizados que se aplicam a todas as instâncias de computação no projeto, use um dos métodos a seguir.
Console
No Cloud de Confiance console, acesse a página Metadados.
Na página Metadados, você verá uma lista de todas as entradas de metadados personalizados do 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 será assim:
--- fingerprint: HcSFdS_1_1I= items: - key: ssh-keys value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ... kind: compute#metadata
REST
Para consultar os metadados do projeto, crie uma solicitação GET para o
método project.get.
Substitua PROJECT_ID pela ID do seu projeto.
GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID
O resultado será assim:
"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"
}
]
}, ...
Conferir metadados de zona
Para ver metadados personalizados que se aplicam a todas as instâncias de computação em uma zona específica em um projeto, use um dos métodos a seguir.
gcloud
Para consultar os metadados personalizados zonais, use o
comando gcloud compute project-zonal-metadata describe.
gcloud compute project-zonal-metadata describe \
--zone=ZONE \
--project=PROJECT_ID
Substitua:
PROJECT_ID: ID do projetoZONE: a zona em que você quer visualizar os metadados zonais.
O resultado será assim:
{
"fingerprint": "VlRIl8dx9vk=",
"metadata": {
items: {
"key-1": "value-1",
"key-2": "value-2"
}
}
}
REST
Para consultar os metadados personalizados zonais, faça uma solicitação GET para o
método instanceSettings().get
GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings
Substitua:
PROJECT_ID: ID do projetoZONE: a zona em que você quer visualizar os metadados zonais.
O resultado será assim:
{
"fingerprint": "VlRIl8dx9vk=",
"metadata": {
items: {
"key-1": "value-1",
"key-2": "value-2"
}
}
}
Ver metadados da instância
Para ver metadados que se aplicam a uma única instância de computação no projeto, use um dos métodos a seguir.
Console
- No console do Cloud de Confiance , acesse a página Instâncias de VM.
Clique no nome da instância de computação com os metadados que você quer ver.
Chaves SSH para esta VM. Na seção Segurança e acesso, veja o campo Chaves SSH.
Um valor
Noneindica que não há chaves SSH armazenadas nos metadados da instância.Qualquer outro valor indica que há chaves SSH armazenadas nos metadados da instância.
Chaves SSH de um projeto. Na seção Segurança e acesso, veja o campo Bloquear chaves SSH do projeto inteiro.
Um valor de
Onindica que o valor da chave de metadadosblock-project-ssh-keyséTRUEnos metadados da instância.Um valor de
Offindica que o valor da chave de metadadosblock-project-ssh-keyséFALSEou que a chave não está definida.
Todos os outros metadados personalizados. Veja a seção Metadados personalizados. Você verá todos os valores e chaves de metadados personalizados, exceto metadados de chave SSH.
gcloud
Use o
comando gcloud compute instances describe
para consultar os metadados da instância:
gcloud compute instances describe INSTANCE_NAME --flatten="metadata[]"
Substitua INSTANCE_NAME pelo nome da instância de computação que você quer encontrar os metadados.
O resultado será o seguinte:
--- fingerprint: MTgTJ5m-Cjs= items: - key: enable-oslogin value: 'true' kind: compute#metadata
REST
Para consultar metadados de uma instância de computação específica, envie uma solicitação GET para o
método instances.get.
GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
O resultado será o seguinte:
......
"metadata": {
"kind": "compute#metadata",
"fingerprint": "XXXXXXVo=",
"items": [
{
"key": "enable-oslogin",
"value": "true"
}
]
},....
Substitua:
PROJECT_ID: ID do projeto;ZONE: a zona em que a instância de computação está localizada.INSTANCE_NAME: o nome da instância de computação
A seguir
- Saiba mais sobre os metadados da VM.
- Saiba como definir metadados personalizados.
- Saiba como definir e consultar atributos de convidado.