Cada máquina virtual (VM) almacena sus metadatos en directorios en un servidor de metadatos. La VM obtiene acceso de manera automática a la API del servidor de metadatos sin ninguna autorización adicional. Puedes usar los métodos que se explican en las siguientes secciones de este documento para ver y consultar los valores de metadatos de las VMs:
Si encuentras errores cuando accedes al servidor de metadatos, consulta Soluciona problemas de acceso al servidor de metadatos.
Antes de comenzar
- Para VM de Windows Server, usa PowerShell 3.0 o versiones posteriores.
Te recomendamos que uses
ctrl+v
para pegar los bloques de código copiados. - Revisa los conceptos básicos sobre cómo se definen, clasifican y organizan los metadatos de VMs para Compute Engine. Para obtener más información, consulta Acerca de los metadatos de VMs.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1
) en la VM o el proyecto - Si tus VMs usan cuentas de servicio: Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio o el proyecto. -
Para ver los metadatos personalizados del proyecto:
compute.projects.get
-
Para ver los metadatos zonales personalizados:
compute.instanceSettings.get
-
Para ver los metadatos personalizados de una instancia de VM, usa
compute.instances.get
-
Si tus VMs usan cuentas de servicio:
iam.serviceAccounts.actAs
- Consulta una sola entrada de metadatos
- Consulta una lista de directorios de metadatos
- Consulta los cambios en los metadatos con la función
wait-for-change
- Para todas las VMs, puedes consultar el servidor de metadatos con el
extremo HTTP (
http://metadata.google.internal/computeMetadata/v1
). En el caso de las VM protegidas, puedes consultar el servidor de metadatos con una de las siguientes opciones:
- El extremo HTTP:
http://metadata.google.internal/computeMetadata/v1
- El extremo HTTPS: (
https://metadata.google.internal/computeMetadata/v1
). Este extremo HTTPS está disponible en la versión preliminar. Para ver el formato para consultar el extremo HTTPS, consulta Cómo consultar metadatos con el extremo del servidor de metadatos HTTPS.
- El extremo HTTP:
- Extremo HTTP:
http://metadata.google.internal/computeMetadata/v1
http://169.254.169.254/computeMetadata/v1
http://metadata.goog/computeMetadata/v1
- Extremo HTTPS (versión preliminar):
Esta es la única URL compatible durante la etapa de vista previa.https://metadata.google.internal/computeMetadata/v1
- Conéctate a tu VM de Linux.
Desde tu VM de Linux, usa la herramienta de
curl
para realizar una consulta. Para consultar una instancia de VM o una entrada de metadatos del proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
Por ejemplo, si quieres consultar la imagen de arranque de la VM, ejecuta la siguiente consulta:
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"
El resultado es similar a este:
projects/rhel-cloud/global/images/rhel-8-v20210122
-
Para ver la clave de metadatos
- Conéctate a tu VM de Windows.
Desde tu VM de Windows, usa el comando
Invoke-RestMethod
para realizar una consulta. Para consultar una entrada de metadatos de una instancia de VM o de un proyecto, ejecuta el siguiente comando:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY") $value
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
Por ejemplo, si quieres consultar la imagen de arranque de la VM, ejecuta la siguiente consulta:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/image") $value
El resultado es similar a este:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
-
Para ver la clave de metadatos
Conéctate a tu VM de Linux.
Para consultar un directorio de metadatos de una instancia de VM o de un proyecto, desde tu VM de Linux, ejecuta el siguiente comando:
curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/" -H "Metadata-Flavor: Google"
Reemplaza
PATH_TO_METADATA_DIRECTORY
por la ruta de acceso a la instancia de la VM o al directorio de metadatos del proyecto para el que deseas consultar las fichas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta de acceso que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta de acceso que debes especificar esinstance/disks/
.
Por ejemplo, considera la entrada
disks/
, que es un directorio de discos adjuntos a la VM. Para consultar la entradadisks/
, completa los siguientes pasos:Ejecuta el comando de la herramienta de
curl
en el directorio de discos.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
El resultado es similar a este:
0/ 1/ 2/
Si deseas obtener más información sobre el directorio
0/
del disco, puedes consultar su URL específica:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"
El resultado es similar a este:
device-name index mode type
Luego, para consultar el tipo de disco (
type
) para los discos0/
, puedes ejecutar lo siguiente:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"
El resultado es similar a este:
PERSISTENT
-
Para ver la entrada del directorio de metadatos del proyecto
Conéctate a tu VM de Windows.
Para consultar un directorio de metadatos de la instancia de VM o del proyecto, desde tu VM de Windows, ejecuta el siguiente comando:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/") $value
Reemplaza
PATH_TO_METADATA_DIRECTORY
por la ruta de acceso a la instancia de la VM o al directorio de metadatos del proyecto para el que deseas consultar las fichas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta de acceso que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta de acceso que debes especificar esinstance/disks/
.
Por ejemplo, considera la entrada
disks/
, que es un directorio de discos adjuntos a la VM. Para consultar la entradadisks/
, completa los siguientes pasos:Usa el comando
Invoke-RestMethod
en el directorio de discos.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/") $value
El resultado es similar a este:
0/ 1/ 2/
Si deseas obtener más información sobre el directorio
0/
del disco, puedes consultar su URL específica:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/") $value
El resultado es similar a este:
device-name index mode type
Luego, para consultar el tipo de disco (
type
) para los discos0/
, puedes ejecutar lo siguiente:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type") $value
El resultado es similar a este:
PERSISTENT
-
Para ver la entrada del directorio de metadatos del proyecto
Conéctate a tu VM de Linux.
Desde tu VM de Linux, usa la herramienta de
curl
para realizar una consulta. Para consultar las listas de un directorio de metadatos de una instancia de VM o del proyecto de forma recursiva, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true" -H "Metadata-Flavor: Google"
Reemplaza
PATH_TO_METADATA_DIRECTORY
por la ruta de acceso a la instancia de la VM o al directorio de metadatos del proyecto para el que deseas consultar las fichas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta de acceso que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta de acceso que debes especificar esinstance/disks/
.
Por ejemplo, con el siguiente comando, se consultan de forma recurrente las listas de metadatos de la instancia para el directorio
disks/
.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true" -H "Metadata-Flavor: Google"
El resultado es similar a este:
[{"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"}]
De forma predeterminada, los contenidos recurrentes se muestran en formato JSON. Si deseas mostrar estos contenidos en formato de texto, agrega el 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"
El resultado es similar a este:
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 la entrada del directorio de metadatos del proyecto
Conéctate a tu VM de Windows.
Desde tu VM de Windows, usa el comando
Invoke-RestMethod
para realizar una consulta. Para consultar las listas de un directorio de metadatos de una instancia de VM o de un proyecto de forma recursiva, ejecuta el siguiente comando:$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true") $valueReemplaza
PATH_TO_METADATA_DIRECTORY
por la ruta de acceso a la instancia de la VM o al directorio de metadatos del proyecto para el que deseas consultar las fichas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta de acceso que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta de acceso que debes especificar esinstance/disks/
.
Por ejemplo, con el siguiente comando, se consultan de forma recurrente las listas de metadatos de la instancia para el directorio
disks/
.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true") $value
El resultado es similar a este:
[{"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"}]
De forma predeterminada, los contenidos recurrentes se muestran en formato JSON. Si deseas mostrar estos contenidos en formato de texto, agrega el 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
El resultado es similar a este:
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 la entrada del directorio de metadatos del proyecto
- Conéctate a tu VM de Linux.
Desde tu VM de Linux, usa la herramienta de
curl
para realizar una consulta. Para cambiar el formato de datos de la respuesta de consulta de una instancia de VM o una entrada de metadatos del proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Reemplaza lo siguiente:
-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
DATA_FORMAT
: el formato en el que deseas obtener los datos de respuesta de la consulta, por ejemplo,text
ojson
.
-
- Conéctate a tu VM de Windows.
Desde tu VM de Windows, usa el comando
Invoke-RestMethod
para realizar una consulta. Para cambiar el formato de datos de la respuesta de consulta de una instancia de VM o una entrada de metadatos del proyecto, ejecuta el siguiente comando:$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT") $valueReemplaza lo siguiente:
-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
DATA_FORMAT
: el formato en el que deseas obtener los datos de respuesta de la consulta, por ejemplo,text
ojson
.
-
Solo puedes realizar una solicitud
wait-for-change
en un extremo de metadatos o de manera recurrente en el contenido de un directorio. No puedes realizar una solicitudwait-for-change
en una lista de directorio. Si intentas hacer esto, el servidor de metadatos falla en tu solicitud y muestra un error Solicitud no válida 400.No puedes realizar una solicitud
wait-for-change
para un token de cuenta de servicio. Si intentas realizar una solicitudwait-for-change
a la URL del token de la cuenta de servicio, la solicitud falla de inmediato y muestra un error Solicitud no válida 400.- Conéctate a tu VM de Linux.
Desde tu VM de Linux, usa la herramienta de
curl
para realizar una consulta. Para realizar una solicitudwait-for-change
para una instancia de VM o una entrada de metadatos del proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true" -H "Metadata-Flavor: Google"
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
Después de que se aplique un cambio en la clave de metadatos especificada, la consulta muestra el valor nuevo.
-
Para ver la clave de metadatos
- Conéctate a tu VM de Windows.
Desde tu VM de Windows, usa el comando
Invoke-RestMethod
para realizar una consulta. Para realizar una solicitudwait-for-change
para una instancia de VM o una entrada de metadatos del proyecto, ejecuta el siguiente comando:$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true") $value
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
Después de que se aplique un cambio en la clave de metadatos especificada, la consulta muestra el valor nuevo.
-
Para ver la clave de metadatos
- Conéctate a tu VM de Linux.
Haz una solicitud a esa clave y, luego, imprime los encabezados. Para ello, usa la herramienta de
curl
con la marca-v
: Para obtener la ETag actual de una instancia de VM o una entrada de metadatos del proyecto, ejecuta el siguiente comando:curl -v "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
Por ejemplo, mediante el siguiente comando, se obtiene el valor de ETag actual para la clave de metadatos de instancia
tags
.user@myinst:~$ curl -v "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
El resultado es similar a este:
* 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 la clave de metadatos
Luego, puedes usar ese valor de ETag con el comando de la herramienta
curl
en tu solicitudwait-for-change
: Para usar el valor de ETag de la solicitudwait-for-change
de metadatos de la instancia o del proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
Reemplaza lo siguiente:
-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
ETAG
: Es el valor de ETag para la clave de metadatos.
En este ejemplo, el siguiente comando usa el valor de ETag para la clave
tags
y las consultas de la entrada de metadatos de la instancia.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e" -H "Metadata-Flavor: Google"
El servidor de metadatos coincide con tu valor de ETag especificado y, si ese valor cambia, la solicitud se muestra con los contenidos nuevos de tu clave de metadatos.
-
- Conéctate a tu VM de Windows.
Haz una solicitud a esa clave y, luego, imprime los encabezados. En Windows, usa el comando
Invoke-WebRequest
. Para obtener la ETag actual de una instancia de VM o una entrada de metadatos del proyecto, ejecuta el siguiente comando:$value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY)
$value.Headers.ETag
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
Por ejemplo, mediante el siguiente comando, se obtiene el valor de ETag actual para la clave de metadatos de instancia
tags
.PS C:> $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/instance/tags)
$value.Headers.ETag
El resultado es similar a este:
* 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 la clave de metadatos
Luego, puedes usar ese valor de ETag en la solicitud
wait-for-change
: Para usar el valor de ETag para la solicitudwait-for-change
de metadatos de la instancia o del proyecto, ejecuta el siguiente 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") $valueReemplaza lo siguiente:
-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
ETAG
: Es el valor de ETag para la clave de metadatos.
En este ejemplo, el siguiente comando usa el valor de ETag para la clave
tags
y las consultas de la entrada de metadatos de la instancia.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") $valueEl servidor de metadatos coincide con tu valor de ETag especificado y, si ese valor cambia, la solicitud se muestra con los contenidos nuevos de tu clave de metadatos.
-
- Conéctate a tu VM de Linux.
Desde tu VM de Linux, usa la herramienta de
curl
para realizar una consulta. A fin de realizar una solicitudwait-for-change
con un valor de tiempo de espera para una instancia de VM o una entrada de metadatos de proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
Reemplaza lo siguiente:
-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
TIMEOUT
: el valor de tiempo de espera.
-
- Conéctate a tu VM de Windows.
Desde tu VM de Windows, usa el comando
Invoke-RestMethod
para realizar una consulta. A fin de realizar una solicitudwait-for-change
con un valor de tiempo de espera para una instancia de VM o una entrada de metadatos de proyecto, ejecuta el siguiente 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") $valueReemplaza lo siguiente:
-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
TIMEOUT
: el valor de tiempo de espera.
-
Debes solicitar acceso a la vista previa del extremo del servidor de metadatos HTTPS.
Después de agregar tu proyecto a la lista de entidades permitidas, puedes crear la VM. La VM debe cumplir con los siguientes requisitos:
- El entorno invitado debe estar ejecutándose en la VM.
- La VM debe ser una VM protegida. Esto se debe a que el servidor de metadatos HTTPS requiere el uso de la interfaz de firmware extensible unificada (UEFI) y el módulo de plataforma de confianza virtual (vTPM) para verificar los certificados.
Conéctate a tu VM de Linux.
Desde tu VM de Linux, usa la herramienta de
curl
para realizar una consulta y especificar el certificado de identidad del cliente. De manera opcional, también puedes especificar el certificado raíz.curl "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" \ -E CLIENT_CERTIFICATE \ [--cacert ROOT_CERTIFICATE] \ -H "Metadata-Flavor: Google"
Reemplaza lo siguiente:
-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
CLIENT_CERTIFICATE
: Es la ruta de acceso al certificado de identidad del cliente:/run/google-mds-mtls/client.key
.- Opcional:
ROOT_CERTIFICATE
: Es la ruta de acceso al certificado raíz:/run/google-mds-mtls/root.crt
.
Por ejemplo, si quieres consultar la imagen de arranque de una VM, ejecuta la siguiente consulta:
user@myinst:~$ curl "https://metadata.google.internal/computeMetadata/v1/instance/image" \ -E /run/google-mds-mtls/client.key \ -H "Metadata-Flavor: Google"
El resultado es similar a este:
projects/rhel-cloud/global/images/rhel-8-v20210122
Si ves un mensaje de error, revisa la documentación para la solución de problemas.
-
Conéctate a tu VM de Windows.
Obtén el certificado de identidad del cliente con uno de los siguientes 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" }
Desde tu VM de Windows, usa el comando
Invoke-RestMethod
y especifica el certificado de identidad del cliente para realizar una 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
Reemplaza lo siguiente:
CLIENT_CERTIFICATE
: Es la ruta de acceso al certificado de identidad del cliente en la VM. Esta es la variable$cert
que se establece en el paso anterior.-
Reemplaza
PATH_TO_METADATA_ENTRY
por la ruta de acceso a la instancia de la VM o la clave de metadatos del proyecto para la que deseas consultar el valor. Si la clave está en un subdirectorio de la instancia o del directorio del proyecto, asegúrate de incluir también el subdirectorio. Por ejemplo:-
Para ver la clave de metadatos
project-id
, que se almacena en los metadatos del proyecto, especificaproject/project-id
. -
Para ver la clave de metadatos
image
, que se almacena en los metadatos de la instancia de VM, especificainstance/image
. -
Para ver el
enable-oslogin
que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especificaproject/attributes/enable-oslogin
oinstance/attributes/enable-oslogin
según tu caso de uso.
-
Para ver la clave de metadatos
Por ejemplo, si quieres consultar la imagen de arranque de una VM de Windows Server 2019, ejecuta la siguiente consulta:
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} -Certificate $cert ` -Uri "https://metadata.google.internal/computeMetadata/v1/instance/image") $value
El resultado es similar a este:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
El servidor de metadatos rechaza de forma automática todas las solicitudes que contengan el encabezado
X-Forwarded-For
. Por lo general, este encabezado indica que la solicitud se realizó a través de un proxy y podría provenir de un usuario no autorizado. Por motivos de seguridad, todas esas solicitudes se rechazan.Cuando usas el comando
curl
para recuperar metadatos del servidor, ten en cuenta que algunos caracteres codificados no son compatibles con la ruta de la solicitud. Los caracteres codificados solo se admiten en la ruta de la consulta.Por ejemplo, la solicitud siguiente podría no funcionar:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/123456789-compute%40developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
Para que esta solicitud funcione, debes reemplazar el carácter codificado no admitido en la ruta de la solicitud (
%40
) con el valor aceptado equivalente (@
).curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/1234567898-compute@developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
En la siguiente tabla, se resumen los caracteres codificados que no se admiten en una ruta de solicitud.
Carácter codificado Valor aceptado %21 !
%24 $
%27 '
%28 (
%29 )
%2A *
%2C ,
%40 @
- Cómo ver los metadatos del proyecto
- Cómo ver los metadatos zonales
- Cómo ver los metadatos de la instancia
En Google Cloud Console, ve a la página Metadatos.
En la página Metadatos, verás una lista de todas las entradas de metadatos personalizados del proyecto para tu proyecto.
PROJECT_ID
: El ID del proyectoZONE
: La zona para la que deseas ver los metadatos zonales.PROJECT_ID
: El ID del proyectoZONE
: La zona para la que deseas ver los metadatos zonales.- En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la VM para la que deseas ver los metadatos.
Claves SSH para esta VM. En la sección Seguridad y acceso, consulta el campo Claves SSH.
Un valor de
None
indica que no hay Llaves SSH almacenadas en metadatos de instancia.Cualquier otro valor indica que hay claves SSH almacenadas en metadatos de instancia.
Llaves SSH para un proyecto. En la sección Seguridad y acceso, consulta el campo Bloquear claves SSH de todo el proyecto.
Un valor de
On
indica que el valor de la clave de metadatosblock-project-ssh-keys
esTRUE
en los metadatos de la instancia.Un valor de
Off
indica que el valor de la clave de metadatosblock-project-ssh-keys
esFALSE
o que no se configuró la clave.
Todos los demás metadatos personalizados. Consulta la sección Metadatos personalizados. Verás todos los valores y las claves de metadatos personalizados, excepto los metadatos de las claves SSH.
PROJECT_ID
: El ID del proyectoZONE
: La zona donde se ubica la VM.VM_NAME
: El nombre de la VM- Obtén más información sobre los metadatos de VM.
- Obtén información para establecer metadatos personalizados.
- Aprende a configurar y consultar atributos de invitado.
Python
Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles obligatorios
Los siguientes roles y permisos son necesarios para ver los metadatos personalizados desde fuera de la VM mediante la consola de Google Cloud, Google Cloud CLI o REST. Si consultas los metadatos de manera programática desde la VM, solo necesitas los roles y los permisos para conectarte a la VM.
Para obtener los permisos que necesitas para ver metadatos personalizados desde fuera de la VM, pídele a tu administrador que te otorgue los siguientes roles de IAM:
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para ver metadatos personalizados desde fuera de la VM. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para ver metadatos personalizados desde fuera de la VM:
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Consulta metadatos de manera programática
Puedes acceder a todos los metadatos si consultas las entradas de valores de metadatos de manera programática desde una VM de Linux o Windows. Desde tu VM, puedes consultar de manera programática tus valores de metadatos de una de las siguientes maneras con herramientas como
curl
en Linux oInvoke-RestMethod
en Windows:Extremos del servidor de metadatos
Para consultar metadatos de manera programática desde una VM, tienes los siguientes extremos del servidor de metadatos:
La mayoría de los ejemplos de este documento usan el extremo HTTP. Sin embargo, puedes acceder a todas las mismas entradas de metadatos, ya sea que uses el extremo https o http.
Partes de una solicitud de metadatos
En la siguiente tabla, se resumen las partes principales de una solicitud de consulta de metadatos.
Componentes Descripción URLs raíz Todos los valores de metadatos se definen como subrutas de la siguiente URLs raíz:
Encabezado de la solicitud Este encabezado indica que la solicitud se envió con la intención de recuperar valores de metadatos, en lugar de hacerlo de forma involuntaria desde una fuente insegura, y permite que el servidor de metadatos muestre los datos que solicitaste. Si no proporcionas este encabezado, el servidor de metadatos rechaza tu solicitud.
Metadata-Flavor: Google
Consulta una sola entrada de metadatos
Usa los siguientes comandos para consultar una sola entrada de metadatos.
Linux
Windows
Consulta listas de directorios de metadatos
Usa los siguientes comandos para consultar las listas de directorios de metadatos. Las listas de directorios son entradas de metadatos que contienen otras claves de metadatos. Cualquier entrada de metadatos que termine en una barra diagonal es una lista de directorios.
Linux
Windows
La entrada
disks/
es un directorio de discos adjuntos a la VM. Para consultar la entrada del disco, completa los siguientes pasos:Consulta de manera recurrente las listas de directorios
Si deseas mostrar todos los contenidos de un directorio, usa el parámetro de búsqueda
recursive=true
en tu solicitud:Linux
Windows
Da formato al resultado de la consulta
De forma predeterminada, cada extremo tiene un formato predefinido para la respuesta. Algunos extremos pueden mostrar datos en formato JSON de forma predeterminada, mientras que otros pueden mostrarlos como una string. Puedes anular la especificación predeterminada del formato de datos con los parámetros de consulta
alt=json
oalt=text
, que muestran datos en formato de string JSON o como una representación de texto sin formato, respectivamente.Linux
Ejemplo
Por ejemplo, la clave
tags
muestra de forma automática datos en formato JSON. Puedes mostrar datos en formato de texto mediante la especificación del parámetro de consultaalt=text
.Consulta predeterminada
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
El resultado es similar a este:
["http-server", "db-client", "app-server", "mysql-server"]
Consulta con formato
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text" -H "Metadata-Flavor: Google"
El resultado es similar a este:
http-server db-client app-server mysql-server
Windows
Ejemplo
Por ejemplo, la clave
tags
muestra de forma automática datos en formato JSON. Puedes mostrar datos en formato de texto mediante la especificación del parámetro de consultaalt=text
.Consulta predeterminada
PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags") $valueEl resultado es similar a este:
["http-server", "db-client", "app-server", "mysql-server"]
Consulta con formato
PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text") $valueEl resultado es similar a este:
http-server db-client app-server mysql-server
Consulta los cambios en los metadatos con la función
wait-for-change
Dado que los valores de metadatos pueden cambiar mientras se ejecuta la VM, se puede notificar al servidor de metadatos sobre los cambios de metadatos mediante la función
wait-for-change
. Con esta opción, la solicitud solo muestra un resultado cuando los metadatos especificados cambiaron.Puedes usar esta función en metadatos personalizados o definidos por el servidor, por lo que si algo cambia en la VM o el proyecto, o si alguien actualiza una entrada de metadatos personalizados, puedes reaccionar de manera programática.
Por ejemplo, puedes realizar una solicitud en la clave
tags
para que la solicitud solo muestre si cambió el contenido de los metadatos de las etiquetas. Cuando se muestra la solicitud, proporciona el valor nuevo de esa clave de metadatos.La función
wait-for-change
también te permite coincidir con la solicitud y establecer tiempos de espera.Cuando trabajes con la función
wait-for-change
, ten en cuenta lo siguiente:Para realizar una solicitud
wait-for-change
, consulta una clave de metadatos y agrega el parámetro de consulta?wait_for_change=true
:Linux
Ejemplos
En este ejemplo, si se hace una solicitud a
setInstanceTags method
, la solicitud muestra los valores nuevos:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true" -H "Metadata-Flavor: Google"
El resultado es similar a este:
http-server db-client
También puedes realizar una solicitud
wait-for-change
de manera recurrente en el contenido de un directorio:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&wait_for_change=true" -H "Metadata-Flavor: Google"
Si hay algún cambio, el servidor de metadatos muestra el nuevo contenido:
{"foo":"bar","baz":"bat"}
Windows
Ejemplos
Después de que se aplique un cambio en la clave de metadatos especificada, la consulta muestra el valor nuevo. En este ejemplo, si se hace una solicitud a
setInstanceTags method
, la solicitud muestra los valores nuevos:PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true") $valueEl resultado es similar a este:
http-server db-client
También puedes realizar una solicitud
wait-for-change
de manera recurrente en el contenido de un directorio:PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes?recursive=true&wait_for_change=true") $valueSi hay algún cambio, el servidor de metadatos muestra el nuevo contenido:
{"foo":"bar","baz":"bat"}
Usa ETags
Cuando envías una consulta
wait-for-change
, el servidor de metadatos muestra una respuesta si algo cambió en el contenido de esos metadatos. Sin embargo, existe una condición de carrera inherente entre una actualización de metadatos y una solicitud dewait-for-change
que se emite, por lo que es útil tener una manera confiable de saber si obtienes el valor de metadatos más reciente.Para ayudarte con esto, puedes usar el parámetro de consulta
last_etag
, que compara el valor de ETag proporcionado con el valor de ETag guardado en el servidor de metadatos. Si los valores de ETag coinciden, se acepta la solicitudwait-for-change
. Si los valores ETag no coinciden, esto indica que el contenido de los metadatos cambió desde la última vez que recuperaste el valor ETag y el servidor de metadatos muestra de inmediato este último valor.VM de Linux
Para obtener el valor de ETag actual de una clave de metadatos, completa los siguientes pasos:
VM de Windows
Para obtener el valor de ETag actual de una clave de metadatos, completa los siguientes pasos:
Python
En el ejemplo siguiente de Python, se muestra cómo observar de manera programática el servidor de metadatos en busca de cambios.
En esta muestra, se establece la ETag inicial como
0
. El servidor de metadatos no mostrará una respuesta con0
como valor de ETag. Cuando se especifica0
como la última ETag en una solicitud, el servidor de metadatos responderá con el valor y la ETag actuales. Esto ahorra un poco de código necesario para obtener el valor y la ETag iniciales.Establece tiempos de espera
Si deseas que el tiempo de espera de la solicitud
wait-for-change
se agote después de una cierta cantidad de segundos, puedes configurar el parámetrotimeout_sec
. El parámetrotimeout_sec
limita el tiempo de espera de la solicitud a la cantidad de segundos que especificaste y, cuando la solicitud alcanza ese límite, muestra los contenidos actuales de la clave de metadatos.Cuando estableces el parámetro
timeout_sec
, la solicitud siempre se muestra después de la cantidad de segundos especificada, sin importar si el valor de metadatos cambió. Solo se puede establecer un valor de número entero para el tiempo de espera.Linux
Por ejemplo, con el siguiente comando, se hace una solicitud
wait-for-change
que está configurada para que el tiempo de espera se agote después de 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
Por ejemplo, con el siguiente comando, se hace una solicitud
wait-for-change
que está configurada para que el tiempo de espera se agote después de 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") $valueCódigos de estado
Cuando realizas una solicitud
wait-for-change
, el servidor de metadatos muestra códigos de estado HTTP estándar para indicar el éxito o el fracaso. En caso de que haya errores, las condiciones de la red pueden hacer que el servidor de metadatos haga fallar la solicitud y muestre un código de error. En estos casos, debes diseñar la aplicación para que sea tolerante a errores y pueda reconocerlos y manejarlos.Estos son los estados posibles que muestra el servidor de metadatos:
Estado Descripción HTTP 200
¡Listo! Se modificó un valor o alcanzaste el timeout_sec
especificado y la solicitud se mostró correctamente.Error 400
La solicitud no fue válida. Corrige la consulta y reintenta la solicitud. Error 404
El valor de metadatos especificado ya no existe. El servidor de metadatos también muestra este error si los metadatos se borran mientras esperas un cambio. Error 503
Hubo un error temporal del servidor o un evento de mantenimiento temporal. Reintenta la solicitud. Consulta metadatos con el extremo del servidor de metadatos HTTPS
El extremo del servidor de metadatos HTTPS (
https://metadata.google.internal/computeMetadata/v1
) proporciona seguridad adicional para la transmisión de información entre el servidor de metadatos y la VM.Para usar el extremo del servidor de metadatos HTTPS, revisa los siguientes requisitos:
Para obtener una descripción general de cómo se manejan las consultas al extremo del servidor de metadatos HTTPS, consulta Extremo del servidor de metadatos HTTPS. Puedes realizar las mismas consultas al servidor de metadatos, ya sea que uses el extremo HTTPS o HTTP. Sin embargo, para llamar al extremo HTTPS, debes especificar la ruta de acceso a los certificados de identidad del cliente y, en algunos casos, el certificado raíz.
En los siguientes comandos, se muestra cómo consultar el servidor de metadatos con el extremo HTTPS.
Linux
Windows
Limitaciones
Visualiza los metadatos personalizados de tus VMs
Puedes ver los valores de metadatos personalizados para las VMs de Compute Engine de una de las siguientes maneras:
Cómo ver los metadatos del proyecto
Para ver los metadatos personalizados que se aplican a todas las VMs de tu proyecto, usa uno de los siguientes métodos.
Console
gcloud
Usa el comando
gcloud compute project-info describe
para consultar los metadatos del proyecto:gcloud compute project-info describe --flatten="commonInstanceMetadata[]"
El resultado es similar a este:
--- fingerprint: HcSFdS_1_1I= items: - key: ssh-keys value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ... kind: compute#metadata
REST
Para consultar los metadatos del proyecto, crea una solicitud
GET
al métodoproject.get
.Reemplaza
PROJECT_ID
con el ID del proyecto.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
El resultado es similar a este:
"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" } ] }, ...
Cómo ver los metadatos zonales
Para ver los metadatos personalizados que se aplican a todas las instancias de VM en una zona específica de un proyecto, usa uno de los siguientes métodos.
gcloud
Para consultar los metadatos zonales personalizados, usa el comando
gcloud compute project-zonal-metadata describe
.gcloud compute project-zonal-metadata describe \ --zone=ZONE \ --project=PROJECT_ID
Reemplaza lo siguiente:
El resultado es similar a este:
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { items: { "key-1": "value-1", "key-2": "value-2" } } }
REST
Para consultar los metadatos zonales personalizados, haz una solicitud
GET
al métodoinstanceSettings().get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings
Reemplaza lo siguiente:
El resultado es similar a este:
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { items: { "key-1": "value-1", "key-2": "value-2" } } }
Cómo ver los metadatos de la instancia
Para ver los metadatos personalizados que se aplican a una sola VM en tu proyecto, usa uno de los siguientes métodos.
Console
gcloud
Usa el comando
gcloud compute instances describe
para consultar los metadatos de la instancia:gcloud compute instances describe VM_NAME --flatten="metadata[]"
Reemplaza
VM_NAME
por el nombre de la VM de la que deseas buscar metadatos.El resultado es similar a este:
--- fingerprint: MTgTJ5m-Cjs= items: - key: enable-oslogin value: 'true' kind: compute#metadata
REST
Para consultar los metadatos de una VM específica, crea una solicitud
GET
para el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
El resultado es similar a este:
...... "metadata": { "kind": "compute#metadata", "fingerprint": "XXXXXXVo=", "items": [ { "key": "enable-oslogin", "value": "true" } ] },....
Reemplaza lo siguiente:
¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-21 (UTC)
-