Cada máquina virtual almacena sus metadatos en directorios de un servidor de metadatos. Tu VM tiene acceso automáticamente a esta API del servidor de metadatos sin necesidad de autorización adicional. Puede usar los métodos que se explican en las siguientes secciones de este documento para ver y consultar los valores de los metadatos de la VM:
Si se producen errores al acceder al servidor de metadatos, consulta el artículo Solucionar problemas de acceso al servidor de metadatos.
Antes de empezar
- En el caso de las máquinas virtuales de Windows Server, usa PowerShell 3.0 o una versión posterior.
Te recomendamos que uses
ctrl+v
para pegar los bloques de código copiados. - Consulta los conceptos básicos sobre cómo se definen, categorizan y organizan los metadatos de las máquinas virtuales de Compute Engine. Para obtener más información, consulta Acerca de los metadatos de las VMs.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Python
Para usar las Python muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para ver los metadatos personalizados desde fuera de la VM mediante la consola de Google Cloud , la CLI de Google Cloud o REST, se necesitan los siguientes roles y permisos. Si consultas los metadatos de forma programática desde la VM, solo necesitas los roles y permisos para conectarte a la VM.
Para obtener los permisos que necesitas para ver los metadatos personalizados desde fuera de la VM, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Administrador de instancias de Compute (v. 1) (
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 en el proyecto
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para ver los metadatos personalizados desde fuera de la VM. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Se necesitan los siguientes permisos para ver los metadatos personalizados desde fuera de la VM:
-
Para ver los metadatos personalizados de un proyecto, sigue estos pasos:
compute.projects.get
en el proyecto -
Para ver los metadatos zonales personalizados, sigue estos pasos:
compute.instanceSettings.get
en la configuración de la instancia de la zona que quieras del proyecto -
Para ver los metadatos personalizados de una instancia de VM, haz lo siguiente:
compute.instances.get
en la VM -
Si tus VMs usan cuentas de servicio:
iam.serviceAccounts.actAs
en las cuentas de servicio o en el proyecto
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Consultar metadatos de forma programática
Puedes acceder a todos los metadatos consultando las entradas de valor de metadatos de forma programática desde una VM Linux o Windows. Desde tu VM, puedes consultar los valores de los metadatos de forma programática de una de las siguientes maneras mediante herramientas como
curl
en Linux oInvoke-RestMethod
en Windows:- Consultar una sola entrada de metadatos
- Consultar un listado de directorios de metadatos
- Consultar los cambios en los metadatos con la función
wait-for-change
Endpoints del servidor de metadatos
Para consultar metadatos de forma programática desde una VM, tienes los siguientes puntos de conexión del servidor de metadatos:
- En todas las VMs, puedes consultar el servidor de metadatos mediante el endpoint HTTP (
http://metadata.google.internal/computeMetadata/v1
) o su dirección IP (169.254.169.254
). Usa la dirección IPv4 incluso con instancias solo IPv6. En el caso de las VMs blindadas, puedes consultar el servidor de metadatos de una de las siguientes formas:
- El endpoint HTTP:
http://metadata.google.internal/computeMetadata/v1
- Endpoint https: (
https://metadata.google.internal/computeMetadata/v1
). Este endpoint https está disponible en vista previa. Para ver el formato de consulta del endpoint HTTPS, consulta Consultar metadatos mediante el endpoint del servidor de metadatos HTTPS.
- El endpoint HTTP:
En la mayoría de los ejemplos de este documento se usa el endpoint HTTP. Sin embargo, puede acceder a todas las mismas entradas de metadatos tanto si usa el endpoint https como el 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 las siguientes URLs raíz:
- Endpoint HTTP:
http://metadata.google.internal/computeMetadata/v1
http://169.254.169.254/computeMetadata/v1
http://metadata.goog/computeMetadata/v1
- Endpoint https (vista previa):
Esta es la única URL admitida durante la fase de vista previa.https://metadata.google.internal/computeMetadata/v1
Encabezado de solicitud Este encabezado indica que la solicitud se ha enviado para recuperar valores de metadatos y que no proviene de una fuente no segura desde la que se ha enviado involuntariamente. Además, permite que el servidor de metadatos devuelva los datos que has solicitado. Si no proporcionas este encabezado, el servidor de metadatos denegará tu solicitud.
Metadata-Flavor: Google
Consultar una sola entrada de metadatos
Usa los siguientes comandos para consultar una sola entrada de metadatos.
Linux
- Conéctate a tu VM Linux.
En tu VM de Linux, usa la herramienta
curl
para hacer una consulta. Para consultar una entrada de metadatos de una instancia de VM o de un proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
Por ejemplo, para 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 debería ser similar al siguiente:
projects/rhel-cloud/global/images/rhel-8-v20210122
-
Para ver la clave de metadatos
Windows
- Conéctate a tu VM de Windows.
En tu máquina virtual de Windows, usa el comando
Invoke-RestMethod
para hacer 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
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
Por ejemplo, para 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 debería ser similar al siguiente:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
-
Para ver la clave de metadatos
Consultar listados de directorios de metadatos
Usa los siguientes comandos para consultar los listados de directorios de metadatos. Los listados de directorios son entradas de metadatos que contienen otras claves de metadatos. Cualquier entrada de metadatos que termine en una barra inclinada es un listado de directorios
Linux
Conéctate a tu VM Linux.
Para consultar un directorio de metadatos de instancia de VM o de proyecto, ejecuta el siguiente comando desde tu VM Linux:
curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/" -H "Metadata-Flavor: Google"
Sustituye
PATH_TO_METADATA_DIRECTORY
por la ruta del directorio de metadatos de la instancia de VM o del proyecto para el que quieras consultar las listas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta que debes especificar esinstance/disks/
.
Por ejemplo, considera la entrada
disks/
, que es un directorio de discos conectado a la VM. Para consultar la entradadisks/
, sigue estos pasos:Ejecuta la herramienta
curl
en el directorio de discos.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
0/ 1/ 2/
Si quieres obtener más información sobre el directorio
0/
, puedes consultar la URL específica de ese directorio:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
device-name index mode type
Para consultar el tipo de disco (
type
) de 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 debería ser similar al siguiente:
PERSISTENT
-
Para ver la entrada del directorio de metadatos del proyecto
Windows
La entrada
disks/
es un directorio de discos que está conectado a la VM. Para consultar la entrada de discos, sigue estos pasos:Conéctate a tu VM de Windows.
Para consultar un directorio de metadatos de una instancia de VM o de un proyecto, ejecuta el siguiente comando desde tu VM de Windows:
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/") $value
Sustituye
PATH_TO_METADATA_DIRECTORY
por la ruta del directorio de metadatos de la instancia de VM o del proyecto para el que quieras consultar las listas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta que debes especificar esinstance/disks/
.
Por ejemplo, considera la entrada
disks/
, que es un directorio de discos conectado a la VM. Para consultar la entradadisks/
, sigue estos 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 debería ser similar al siguiente:
0/ 1/ 2/
Si quieres obtener más información sobre el directorio
0/
, puedes consultar la URL específica de ese directorio:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/") $value
El resultado debería ser similar al siguiente:
device-name index mode type
Para consultar el tipo de disco (
type
) de 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 debería ser similar al siguiente:
PERSISTENT
-
Para ver la entrada del directorio de metadatos del proyecto
Consultar de forma recursiva las listas de directorios
Si quieres devolver todo el contenido de un directorio, usa el parámetro de consulta
recursive=true
con tu solicitud:Linux
Conéctate a tu VM Linux.
En tu VM de Linux, usa la herramienta
curl
para hacer una consulta. Para consultar de forma recursiva los listados de un directorio de metadatos de una instancia de VM o de un proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true" -H "Metadata-Flavor: Google"
Sustituye
PATH_TO_METADATA_DIRECTORY
por la ruta del directorio de metadatos de la instancia de VM o del proyecto para el que quieras consultar las listas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta que debes especificar esinstance/disks/
.
Por ejemplo, el siguiente comando consulta de forma recursiva los listados de metadatos de la instancia del directorio
disks/
.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
[{"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, el contenido recursivo se devuelve en formato JSON. Si quiere devolver este contenido en formato de texto, añada 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 debería ser similar al siguiente:
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
Windows
Conéctate a tu VM de Windows.
En tu VM de Windows, usa el comando
Invoke-RestMethod
para hacer una consulta. Para consultar de forma recursiva los listados de un directorio 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_DIRECTORY/?recursive=true") $valueSustituye
PATH_TO_METADATA_DIRECTORY
por la ruta del directorio de metadatos de la instancia de VM o del proyecto para el que quieras consultar las listas de forma recursiva. Por ejemplo:-
Para ver la entrada del directorio de metadatos del proyecto
attributes
, la ruta que debes especificar esproject/attributes/
. -
Para ver la entrada del directorio de metadatos de la instancia de VM
disks
, la ruta que debes especificar esinstance/disks/
.
Por ejemplo, el siguiente comando consulta de forma recursiva los listados de metadatos de la instancia del 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 debería ser similar al siguiente:
[{"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, el contenido recursivo se devuelve en formato JSON. Si quiere devolver este contenido en formato de texto, añada 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 debería ser similar al siguiente:
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
Aplicar formato a los resultados de una consulta
De forma predeterminada, cada endpoint tiene un formato predefinido para la respuesta. Algunos endpoints pueden devolver datos en formato JSON de forma predeterminada, mientras que otros pueden devolver datos como una cadena. Puede anular la especificación del formato de datos predeterminado mediante los parámetros de consulta
alt=json
oalt=text
, que devuelven los datos en formato de cadena JSON o como una representación de texto sin formato, respectivamente.Linux
- Conéctate a tu VM Linux.
En tu VM de Linux, usa la herramienta
curl
para hacer una consulta. Para cambiar el formato de los datos de respuesta de una consulta de una instancia de VM o de una entrada de metadatos de un proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Haz los cambios siguientes:
-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
DATA_FORMAT
: el formato en el que quieres que se muestren los datos de respuesta de la consulta (por ejemplo,text
ojson
).
-
Ejemplo
Por ejemplo, la clave
tags
devuelve automáticamente los datos en formato JSON. Para devolver los datos en formato de texto, especifica el parámetro de consultaalt=text
.Consulta predeterminada
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
["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 debería ser similar al siguiente:
http-server db-client app-server mysql-server
Windows
- Conéctate a tu VM de Windows.
En tu VM de Windows, usa el comando
Invoke-RestMethod
para hacer una consulta. Para cambiar el formato de los datos de respuesta de una consulta de una instancia de máquina virtual o de una entrada de metadatos 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?alt=DATA_FORMAT") $valueHaz los cambios siguientes:
-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
DATA_FORMAT
: el formato en el que quieres que se muestren los datos de respuesta de la consulta (por ejemplo,text
ojson
).
-
Ejemplo
Por ejemplo, la clave
tags
devuelve automáticamente los datos en formato JSON. Para devolver los datos en formato de texto, especifica el 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 debería ser similar al siguiente:
["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 debería ser similar al siguiente:
http-server db-client app-server mysql-server
Consultar los cambios en los metadatos con la función
wait-for-change
Dado que los valores de los metadatos pueden cambiar mientras se ejecuta la VM, se puede notificar al servidor de metadatos los cambios en los metadatos mediante la función
wait-for-change
. Con esta opción, la solicitud solo devuelve un resultado cuando los metadatos especificados han cambiado.Puedes usar esta función en metadatos personalizados o definidos por el servidor. De esta forma, si cambia algo en tu máquina virtual o proyecto, o si alguien actualiza una entrada de metadatos personalizados, puedes reaccionar al cambio de forma programática.
Por ejemplo, puedes hacer una solicitud en la clave
tags
para que la solicitud solo se devuelva si el contenido de los metadatos de las etiquetas ha cambiado. Cuando se devuelve la solicitud, se proporciona el nuevo valor de esa clave de metadatos.La función
wait-for-change
también te permite buscar coincidencias con tu solicitud y definir tiempos de espera.Cuando trabajes con la función
wait-for-change
, ten en cuenta lo siguiente:Solo puedes hacer una solicitud
wait-for-change
en un endpoint de metadatos o de forma recursiva en el contenido de un directorio. No puedes realizar una solicitudwait-for-change
en una ficha de directorio. Si intentas hacerlo, el servidor de metadatos rechazará tu solicitud y devolverá un error 400 (solicitud no válida).No puedes realizar una solicitud
wait-for-change
para un token de cuenta de servicio. Si intentas enviar una solicitudwait-for-change
a la URL del token de la cuenta de servicio, la solicitud falla inmediatamente y devuelve un error 400 Invalid Request.
Para hacer una solicitud
wait-for-change
, consulta una clave de metadatos y añade el parámetro de consulta?wait_for_change=true
:Linux
- Conéctate a tu VM Linux.
En tu VM de Linux, usa la herramienta
curl
para hacer una consulta. Para enviar una solicitudwait-for-change
de una entrada de metadatos de una instancia de VM o de un proyecto, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true" -H "Metadata-Flavor: Google"
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
Cuando se cambia la clave de metadatos especificada, la consulta devuelve el nuevo valor.
-
Para ver la clave de metadatos
Ejemplos
En este ejemplo, si se hace una solicitud a
setInstanceTags method
, la solicitud devuelve los nuevos valores:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
http-server db-client
También puedes realizar una solicitud
wait-for-change
de forma recursiva 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"
El servidor de metadatos devuelve el nuevo contenido si hay algún cambio:
{"foo":"bar","baz":"bat"}
Windows
- Conéctate a tu VM de Windows.
En tu VM de Windows, usa el comando
Invoke-RestMethod
para hacer una consulta. Para enviar una solicitudwait-for-change
de 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?wait_for_change=true") $value
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
Cuando se cambia la clave de metadatos especificada, la consulta devuelve el nuevo valor.
-
Para ver la clave de metadatos
Ejemplos
Cuando se cambia la clave de metadatos especificada, la consulta devuelve el nuevo valor. En este ejemplo, si se hace una solicitud a
setInstanceTags method
, la solicitud devuelve los nuevos valores:PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true") $valueEl resultado debería ser similar al siguiente:
http-server db-client
También puedes realizar una solicitud
wait-for-change
de forma recursiva 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") $valueEl servidor de metadatos devuelve el nuevo contenido si hay algún cambio:
{"foo":"bar","baz":"bat"}
Usar ETags
Cuando envías una consulta
wait-for-change
, el servidor de metadatos devuelve una respuesta si ha cambiado algo en el contenido de esos metadatos. Sin embargo, existe una condición de carrera inherente entre una actualización de metadatos y una solicitudwait-for-change
, por lo que es útil tener una forma fiable de saber que estás obteniendo el valor de metadatos más reciente.Para ello, puede usar el parámetro de consulta
last_etag
, que compara el valor de ETag que proporcione 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 de ETag no coinciden, significa que el contenido de los metadatos ha cambiado desde la última vez que recuperó el valor de ETag, y el servidor de metadatos devuelve inmediatamente este último valor.Máquinas virtuales Linux
Para obtener el valor de ETag actual de una clave de metadatos, siga estos pasos:
- Conéctate a tu VM Linux.
Haz una solicitud a esa clave e imprime los encabezados. Para ello, usa la
curl
herramienta con la marca-v
. Para obtener el ETag actual de una instancia de VM o de una entrada de metadatos de un proyecto, ejecuta el siguiente comando:curl -v "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
Por ejemplo, el siguiente comando obtiene el valor de ETag actual de la clave de metadatos de la instancia
tags
.user@myinst:~$ curl -v "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
* 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
A continuación, puedes usar ese valor de ETag con el comando
curl
en tu solicitudwait-for-change
. Para usar el valor de ETag en la solicitudwait-for-change
de metadatos de una instancia o un 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"
Haz los cambios siguientes:
-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
ETAG
: el valor de ETag de la clave de metadatos.
En este ejemplo, el siguiente comando usa el valor de ETag de la clave
tags
y consulta 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 el valor de ETag que has especificado y, si ese valor cambia, la solicitud se devuelve con el nuevo contenido de tu clave de metadatos.
-
Máquinas virtuales de Windows
Para obtener el valor de ETag actual de una clave de metadatos, siga estos pasos:
- Conéctate a tu VM de Windows.
Haz una solicitud a esa clave e imprime los encabezados. En Windows, usa el comando
Invoke-WebRequest
. Para obtener el ETag actual de una instancia de VM o de una entrada de metadatos de un 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
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
Por ejemplo, el siguiente comando obtiene el valor de ETag actual de la clave de metadatos de la 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 debería ser similar al siguiente:
* 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
Después, puedes usar ese valor de ETag en tu solicitud
wait-for-change
. Para usar el valor de ETag en la solicitudwait-for-change
de metadatos de instancia o 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&last_etag=ETAG") $valueHaz los cambios siguientes:
-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
ETAG
: el valor de ETag de la clave de metadatos.
En este ejemplo, el siguiente comando usa el valor de ETag de la clave
tags
y consulta 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 el valor de ETag que has especificado y, si ese valor cambia, la solicitud se devuelve con el nuevo contenido de tu clave de metadatos.
-
Python
En el siguiente ejemplo de Python se muestra cómo monitorizar de forma programática el servidor de metadatos para detectar cambios.
En este ejemplo se asigna el valor
0
al ETag inicial. El servidor de metadatos no devuelve una respuesta con0
como valor de ETag. Cuando se especifica0
como último ETag en una solicitud, el servidor de metadatos responde con el valor y el ETag actuales. De esta forma, se ahorra parte del código necesario para obtener el valor inicial y el ETag.Definir tiempos de espera
Si quieres que tu solicitud
wait-for-change
se agote después de un número determinado de segundos, puedes definir el parámetrotimeout_sec
. El parámetrotimeout_sec
limita el tiempo de espera de tu solicitud al número de segundos que hayas especificado. Cuando la solicitud alcanza ese límite, devuelve el contenido actual de la clave de metadatos.Cuando se define el parámetro
timeout_sec
, la solicitud siempre se devuelve después del número de segundos especificado, independientemente de si el valor de los metadatos ha cambiado o no. Solo se puede definir un valor entero para el tiempo de espera.Linux
- Conéctate a tu VM Linux.
En tu VM de Linux, usa la herramienta
curl
para hacer una consulta. Para enviar una solicitudwait-for-change
con un valor de tiempo de espera para una entrada de metadatos de instancia de VM o 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"
Haz los cambios siguientes:
-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
TIMEOUT
: el valor de tiempo de espera.
-
Por ejemplo, el siguiente comando realiza una solicitud
wait-for-change
que se agota al cabo 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
- Conéctate a tu VM de Windows.
En tu máquina virtual de Windows, usa el comando
Invoke-RestMethod
para hacer una consulta. Para enviar una solicitudwait-for-change
con un valor de tiempo de espera para 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?wait_for_change=true&timeout_sec=TIMEOUT") $valueHaz los cambios siguientes:
-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
TIMEOUT
: el valor de tiempo de espera.
-
Por ejemplo, el siguiente comando realiza una solicitud
wait-for-change
que se agota al cabo 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") $valueConsultar metadatos mediante el endpoint del servidor de metadatos HTTPS
El endpoint del servidor de metadatos HTTPS (
https://metadata.google.internal/computeMetadata/v1
) proporciona más seguridad para la transmisión de información entre el servidor de metadatos y la VM.Para usar el endpoint del servidor de metadatos HTTPS, la VM debe cumplir los siguientes requisitos:
- El entorno de invitado debe ejecutarse en la VM.
- La clave de metadatos
disable-https-mds-setup
de la VM debe tener el valorFALSE
. - La VM debe ser una VM blindada. Esto se debe a que el servidor de metadatos HTTPS requiere el uso de Unified Extensible Firmware Interface (UEFI) y Virtual Trusted Platform Module (vTPM) para verificar los certificados.
Para obtener una descripción general de cómo se gestionan las consultas al endpoint del servidor de metadatos HTTPS, consulta Endpoint del servidor de metadatos HTTPS. Puedes hacer las mismas consultas al servidor de metadatos tanto si usas el endpoint https como el http. Sin embargo, para llamar al endpoint https, debes especificar la ruta a los certificados de identidad del cliente y, en algunos casos, el certificado raíz.
Los siguientes comandos muestran cómo consultar el servidor de metadatos mediante el endpoint https.
Linux
Conéctate a tu VM Linux.
En tu VM de Linux, usa la herramienta
curl
para hacer una consulta y especificar el certificado de identidad del cliente. 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"
Haz los cambios siguientes:
-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
CLIENT_CERTIFICATE
: la ruta al certificado de identidad del cliente:/run/google-mds-mtls/client.key
.- Opcional:
ROOT_CERTIFICATE
, la ruta al certificado raíz:/run/google-mds-mtls/root.crt
. Debe especificar este valor si el certificado raíz no se ha añadido al almacén de confianza del SO.
Por ejemplo, para 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 debería ser similar al siguiente:
projects/rhel-cloud/global/images/rhel-8-v20210122
Si aparece un mensaje de error, consulta la documentación para solucionar problemas.
-
Windows
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" }
En tu VM de Windows, usa el comando
Invoke-RestMethod
y especifica el certificado de identidad del cliente para hacer 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
Haz los cambios siguientes:
CLIENT_CERTIFICATE
: la ruta al certificado de identidad del cliente en la VM. Esta es la variable$cert
que se ha definido en el paso anterior.-
Sustituye
PATH_TO_METADATA_ENTRY
por la ruta a la clave de metadatos de la instancia de VM o del proyecto cuyo valor quieras consultar. Si la clave está en un subdirectorio del directorio de la instancia o del proyecto, asegúrese 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, especifiqueinstance/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
en función de tu caso de uso.
-
Para ver la clave de metadatos
Por ejemplo, para 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 debería ser similar al siguiente:
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
Limitaciones
El servidor de metadatos rechaza automáticamente las solicitudes que contienen el encabezado
X-Forwarded-For
. Este encabezado suele indicar que la solicitud se ha enviado a través de un proxy y que puede que no la haya realizado un usuario autorizado. Por motivos de seguridad, se rechazan todas las solicitudes de este tipo.Cuando usas el comando
curl
para obtener metadatos del servidor, ten en cuenta que algunos caracteres codificados no se admiten en la ruta de la solicitud. Los caracteres codificados solo se admiten en la ruta de consulta.Por ejemplo, es posible que la siguiente solicitud no funcione:
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, debe sustituir el carácter codificado no admitido en la ruta de la solicitud (
%40
) por 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ódigos de estado
Cuando haces una solicitud al servidor de metadatos, este devuelve códigos de estado HTTP estándar para indicar si la solicitud se ha completado correctamente o no. A veces, las condiciones de la red o los eventos del host pueden provocar que el servidor de metadatos no pueda procesar tu solicitud y devuelva un código de error. En estos casos, debes diseñar tu aplicación para que sea tolerante a fallos y pueda reconocer y gestionar estos errores.
Para ver una lista detallada de los códigos de estado que se pueden devolver, consulta Solucionar problemas con códigos de servidor.
Ver los metadatos personalizados de tus VMs
Puede ver los valores de los metadatos personalizados de sus VMs de Compute Engine de una de las siguientes formas:
Ver metadatos de un proyecto
Para ver los metadatos personalizados que se aplican a todas las VMs de tu proyecto, usa uno de los siguientes métodos.
Consola
En la Google Cloud consola, ve a la página Metadatos.
En la página Metadatos, verá una lista de todas las entradas de metadatos de proyecto personalizados de su proyecto.
gcloud
Usa el comando
gcloud compute project-info describe
para consultar los metadatos del proyecto:gcloud compute project-info describe --flatten="commonInstanceMetadata[]"
El resultado debería ser similar al siguiente:
--- fingerprint: HcSFdS_1_1I= items: - key: ssh-keys value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ... kind: compute#metadata
REST
Para consultar los metadatos de un proyecto, crea una solicitud
GET
al métodoproject.get
.Sustituye
PROJECT_ID
por el ID del proyecto.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
El resultado debería ser similar al siguiente:
"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" } ] }, ...
Ver metadatos zonales
Para ver los metadatos personalizados que se aplican a todas las instancias de máquina virtual de una zona específica de un proyecto, utiliza 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
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona de la que quieres ver los metadatos zonales.
El resultado debería ser similar al siguiente:
{ "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
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona de la que quieres ver los metadatos zonales.
El resultado debería ser similar al siguiente:
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { items: { "key-1": "value-1", "key-2": "value-2" } } }
Ver metadatos de instancias
Para ver los metadatos que se aplican a una sola VM de tu proyecto, utiliza uno de los siguientes métodos.
Consola
- En la consola de Google Cloud , ve a la página Instancias de VM.
Haga clic en el nombre de la VM de la que quiera ver los metadatos.
Claves SSH de esta VM. En la sección Seguridad y acceso, consulta el campo Claves SSH.
El valor
None
indica que no hay claves SSH almacenadas en los metadatos de la instancia.Cualquier otro valor indica que hay claves SSH almacenadas en los metadatos de la instancia.
Claves SSH de un proyecto. En la sección Seguridad y acceso, consulta el campo Bloquear claves SSH del proyecto.
El valor
On
indica que el valor de la clave de metadatosblock-project-ssh-keys
esTRUE
en los metadatos de instancia.El valor
Off
indica que el valor de la clave de metadatosblock-project-ssh-keys
esFALSE
o que la clave no está definida.
Todos los demás metadatos personalizados. Consulta la sección Metadatos personalizados. Verá todas las claves y los valores de metadatos personalizados, excepto los metadatos de claves SSH.
gcloud
Usa el comando
gcloud compute instances describe
para consultar los metadatos de la instancia:gcloud compute instances describe VM_NAME --flatten="metadata[]"
Sustituye
VM_NAME
por el nombre de la VM de la que quieras obtener los metadatos.El resultado debería ser similar al siguiente:
--- fingerprint: MTgTJ5m-Cjs= items: - key: enable-oslogin value: 'true' kind: compute#metadata
REST
Para consultar los metadatos de una VM específica, envía una solicitud
GET
al métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
El resultado debería ser similar al siguiente:
...... "metadata": { "kind": "compute#metadata", "fingerprint": "XXXXXXVo=", "items": [ { "key": "enable-oslogin", "value": "true" } ] },....
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona en la que se encuentra la VMVM_NAME
: el nombre de la VM
Siguientes pasos
- Más información sobre los metadatos de máquinas virtuales
- Consulte cómo definir metadatos personalizados.
- Consulte cómo configurar y consultar atributos de invitados.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-