Ver y consultar metadatos de VM


Cada máquina virtual (VM) almacena sus metadatos en directorios en un servidor de metadatos. Su VM tiene acceso automáticamente a esta API de servidor de metadatos sin ninguna autorización adicional. Puede utilizar los métodos explicados en las siguientes secciones de este documento para ver y consultar valores de metadatos de VM:

Si encuentra errores al acceder al servidor de metadatos, consulte Solución de problemas de acceso al servidor de metadatos .

Antes de comenzar

  • Para máquinas virtuales con Windows Server, utilice PowerShell 3.0 o posterior . Le recomendamos que utilice ctrl+v para pegar los bloques de código copiados.
  • Revise los conceptos básicos sobre cómo se definen, categorizan y organizan los metadatos de VM para Compute Engine. Para obtener más información, consulte Acerca de los metadatos de VM .
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. 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.

      1. Install the Google Cloud CLI.
      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. 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, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Roles requeridos

Se necesitan las siguientes funciones y permisos para ver metadatos personalizados desde fuera de la VM mediante la consola de Google Cloud, la CLI de Google Cloud o REST. Si consulta los metadatos mediante programación desde la VM, solo necesita los roles y permisos para conectarse a la VM.

Para obtener los permisos que necesita para ver metadatos personalizados desde fuera de la máquina virtual, solicite a su administrador que le otorgue las siguientes funciones de IAM:

Para obtener más información sobre cómo otorgar roles, consulte Administrar 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 se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

Se requieren los siguientes permisos para ver metadatos personalizados desde fuera de la VM:

  • Para ver los metadatos personalizados del proyecto: compute.projects.get en el proyecto
  • Para ver metadatos zonales personalizados: compute.instanceSettings.get en la configuración de instancia en la zona requerida en el proyecto
  • Para ver metadatos personalizados para una instancia de VM: compute.instances.get en la VM
  • Si sus máquinas virtuales usan cuentas de servicio: iam.serviceAccounts.actAs en las cuentas de servicio o el proyecto

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

Consultar metadatos mediante programación

Puede acceder a todos los metadatos consultando las entradas de valores de metadatos mediante programación desde una máquina virtual Linux o Windows. Desde dentro de su VM, puede consultar mediante programación sus valores de metadatos de una de las siguientes maneras mediante el uso de herramientas como curl en Linux o Invoke-RestMethod en Windows:

Puntos finales del servidor de metadatos

Para consultar metadatos mediante programación, desde una máquina virtual, tiene los siguientes puntos finales del servidor de metadatos:

La mayoría de los ejemplos de este documento utilizan el punto final http. Sin embargo, puede acceder a las mismas entradas de metadatos ya sea que utilice el punto final https o http.

Partes de una solicitud de metadatos

La siguiente tabla resume las partes principales de una solicitud de consulta de metadatos.

Componentes Descripción
URL raíz

Todos los valores de metadatos se definen como subrutas debajo de las siguientes URL raíz:

  • punto final http :
    • http://metadata.google.internal/computeMetadata/v1
    • http://169.254.169.254/computeMetadata/v1
    • http://metadata.goog/computeMetadata/v1
  • punto final https ( vista previa ) :
    • https://metadata.google.internal/computeMetadata/v1
      Esta es la única URL admitida durante la etapa de vista previa.
Encabezado de solicitud

Este encabezado indica que la solicitud se envió con la intención de recuperar valores de metadatos, en lugar de hacerlo involuntariamente desde una fuente insegura, y permite que el servidor de metadatos devuelva los datos que usted solicitó. Si no proporciona este encabezado, el servidor de metadatos rechaza su solicitud.

Metadata-Flavor: Google

Consultar una única entrada de metadatos

Utilice los siguientes comandos para consultar una única entrada de metadatos.

linux

  1. Conéctese a su máquina virtual Linux.
  2. Desde su máquina virtual Linux, utilice la herramienta curl para realizar una consulta. Para consultar una instancia de VM o una entrada de metadatos del proyecto, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
    • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
    • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.

    Por ejemplo, para consultar la imagen de inicio de la VM, ejecute la siguiente consulta:

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

    El resultado es similar al siguiente:

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

ventanas

  1. Conéctese a su máquina virtual Windows.
  2. Desde su máquina virtual Windows, use el comando Invoke-RestMethod para realizar una consulta. Para consultar una instancia de VM o una entrada de metadatos del proyecto, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
    • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
    • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.

    Por ejemplo, para consultar la imagen de inicio de la VM, ejecute 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 al siguiente:

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

Consultar listados de directorios de metadatos

Utilice los siguientes comandos para consultar 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 diagonal es una lista de directorio.

linux

  1. Conéctese a su máquina virtual Linux.

  2. Para consultar una instancia de VM o un directorio de metadatos de proyecto, desde su VM Linux, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_DIRECTORY con la ruta a la instancia de VM o al directorio de metadatos del proyecto cuyos listados desea consultar de forma recursiva. Por ejemplo:

    • Para ver la entrada del directorio de metadatos del proyecto attributes , la ruta a especificar es project/attributes/ .
    • Para ver la entrada del directorio de metadatos de la instancia de VM disks , la ruta a especificar es instance/disks/ .

    Por ejemplo, considere la entrada disks/ , que es un directorio de discos adjunto a la VM. Para consultar los disks/ entrada, complete los siguientes pasos:

    1. Ejecute el comando de 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 es similar al siguiente:

      0/
      1/
      2/
      
    2. Si desea obtener más información sobre el directorio del disco 0/ , puede consultar la URL específica para ese directorio:

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

      El resultado es similar al siguiente:

      device-name
      index
      mode
      type
      
    3. Luego, para consultar el tipo de disco ( type ) para los discos 0/ , puede ejecutar lo siguiente:

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

      El resultado es similar al siguiente:

      PERSISTENT
      

ventanas

La entrada disks/ es un directorio de discos que está conectado a la VM. Para consultar la entrada de discos, complete los siguientes pasos:

  1. Conéctese a su máquina virtual Windows.

  2. Para consultar una instancia de VM o un directorio de metadatos de proyecto, desde su VM de Windows, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_DIRECTORY con la ruta a la instancia de VM o al directorio de metadatos del proyecto cuyos listados desea consultar de forma recursiva. Por ejemplo:

    • Para ver la entrada del directorio de metadatos del proyecto attributes , la ruta a especificar es project/attributes/ .
    • Para ver la entrada del directorio de metadatos de la instancia de VM disks , la ruta a especificar es instance/disks/ .

    Por ejemplo, considere la entrada disks/ , que es un directorio de discos adjunto a la VM. Para consultar los disks/ entrada, complete los siguientes pasos:

    1. Utilice 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 al siguiente:

      0/
      1/
      2/
      
    2. Si desea obtener más información sobre el directorio del disco 0/ , puede consultar la URL específica para ese directorio:

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

      El resultado es similar al siguiente:

      device-name
      index
      mode
      type
      
    3. Luego, para consultar el tipo de disco ( type ) para los discos 0/ , puede 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 al siguiente:

      PERSISTENT
      

Consultar recursivamente listados de directorios.

Si desea devolver todo el contenido de un directorio, utilice el parámetro de consulta recursive=true con su solicitud:

linux

  1. Conéctese a su máquina virtual Linux.

  2. Desde su máquina virtual Linux, utilice la herramienta curl para realizar una consulta. Para consultar recursivamente los listados de una instancia de VM o un directorio de metadatos del proyecto, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_DIRECTORY con la ruta a la instancia de VM o al directorio de metadatos del proyecto cuyos listados desea consultar de forma recursiva. Por ejemplo:

    • Para ver la entrada del directorio de metadatos del proyecto attributes , la ruta a especificar es project/attributes/ .
    • Para ver la entrada del directorio de metadatos de la instancia de VM disks , la ruta a especificar es instance/disks/ .

    Por ejemplo, el siguiente comando consulta de forma recursiva los listados 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 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, los contenidos recursivos se devuelven en formato JSON. Si desea devolver estos contenidos en formato de texto, agregue 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 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
      

ventanas

  1. Conéctese a su máquina virtual Windows.

  2. Desde su máquina virtual Windows, use el comando Invoke-RestMethod para realizar una consulta. Para consultar recursivamente los listados de una instancia de VM o un directorio de metadatos del proyecto, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_DIRECTORY con la ruta a la instancia de VM o al directorio de metadatos del proyecto cuyos listados desea consultar de forma recursiva. Por ejemplo:

    • Para ver la entrada del directorio de metadatos del proyecto attributes , la ruta a especificar es project/attributes/ .
    • Para ver la entrada del directorio de metadatos de la instancia de VM disks , la ruta a especificar es instance/disks/ .

    Por ejemplo, el siguiente comando consulta de forma recursiva los listados 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 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, los contenidos recursivos se devuelven en formato JSON. Si desea devolver estos contenidos en formato de texto, agregue 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 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
    

Dar formato a la salida de la consulta

De forma predeterminada, cada punto final tiene un formato predefinido para la respuesta. Algunos puntos finales pueden devolver datos en formato JSON de forma predeterminada, mientras que otros pueden devolver datos como una cadena. Puede anular la especificación de formato de datos predeterminada utilizando los parámetros de consulta alt=json o alt=text , que devuelven datos en formato de cadena JSON o como una representación de texto sin formato, respectivamente.

linux

  1. Conéctese a su máquina virtual Linux.
  2. Desde su máquina virtual Linux, utilice la herramienta curl para realizar una consulta. Para cambiar el formato de datos de respuesta de consulta para una instancia de VM o una entrada de metadatos de proyecto, ejecute el siguiente comando:

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

    Reemplace lo siguiente:

    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.
    • DATA_FORMAT : el formato en el que desea los datos de respuesta de la consulta (por ejemplo, text o json ).

Ejemplo

Por ejemplo, la clave tags devuelve automáticamente datos en formato JSON. En su lugar, puede devolver datos en formato de texto, especificando el parámetro de consulta alt=text .

Consulta predeterminada

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

El resultado es 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 es similar al siguiente:

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

ventanas

  1. Conéctese a su máquina virtual Windows.
  2. Desde su máquina virtual Windows, use el comando Invoke-RestMethod para realizar una consulta. Para cambiar el formato de datos de respuesta de consulta para una instancia de VM o una entrada de metadatos de proyecto, ejecute el siguiente comando:

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

    Reemplace lo siguiente:

    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.
    • DATA_FORMAT : el formato en el que desea los datos de respuesta de la consulta (por ejemplo, text o json ).

Ejemplo

Por ejemplo, la clave tags devuelve automáticamente datos en formato JSON. En su lugar, puede devolver datos en formato de texto, especificando el parámetro de consulta alt=text .

Consulta predeterminada

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

El resultado es 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")
  $value
  

El resultado es similar al siguiente:

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

Consultar cambios de metadatos utilizando la función wait-for-change

Dado que los valores de metadatos pueden cambiar mientras su VM se está ejecutando, 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 devuelve un resultado cuando los metadatos especificados han cambiado.

Puede usar esta función en metadatos personalizados o metadatos definidos por el servidor, de modo que si algo cambia en su VM o proyecto, o si alguien actualiza una entrada de metadatos personalizados, puede reaccionar mediante programación al cambio.

Por ejemplo, puede realizar una solicitud en la clave tags para que la solicitud solo regrese si el contenido de los metadatos de las etiquetas ha cambiado. Cuando la solicitud regresa, proporciona el nuevo valor de esa clave de metadatos.

La función wait-for-change también le permite coincidir con su solicitud y establecer tiempos de espera .

Cuando trabaje con la función wait-for-change , considere lo siguiente:

  • Solo puede realizar una solicitud de wait-for-change en un punto final de metadatos o de forma recursiva en el contenido de un directorio. No puede realizar una solicitud de wait-for-change en una lista de directorio. Si intenta hacer esto, el servidor de metadatos falla su solicitud y devuelve un error 400 Solicitud no válida .

  • No puede realizar una solicitud de wait-for-change para un token de cuenta de servicio. Si intenta realizar una solicitud de wait-for-change a la URL del token de la cuenta de servicio, la solicitud falla inmediatamente y devuelve un error 400 Solicitud no válida .

Para realizar una solicitud wait-for-change , consulte una clave de metadatos y agregue el parámetro de consulta ?wait_for_change=true :

linux

  1. Conéctese a su máquina virtual Linux.
  2. Desde su máquina virtual Linux, utilice la herramienta curl para realizar una consulta. Para realizar una solicitud de wait-for-change para una instancia de VM o una entrada de metadatos de proyecto, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
    • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
    • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.

    Después de que hay un cambio en la clave de metadatos especificada, la consulta regresa con el nuevo valor.

Ejemplos

En este ejemplo, si se realiza una solicitud al setInstanceTags method , la solicitud regresa con los nuevos valores:

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

El resultado es similar al siguiente:

  http-server
  db-client
  

También puede realizar una solicitud de 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 los nuevos contenidos si hay algún cambio:

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

ventanas

  1. Conéctese a su máquina virtual Windows.
  2. Desde su máquina virtual Windows, use el comando Invoke-RestMethod para realizar una consulta. Para realizar una solicitud de wait-for-change para una instancia de VM o una entrada de metadatos de proyecto, ejecute 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
    

    Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
    • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
    • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.

    Después de que hay un cambio en la clave de metadatos especificada, la consulta regresa con el nuevo valor.

Ejemplos

Después de que hay un cambio en la clave de metadatos especificada, la consulta regresa con el nuevo valor. En este ejemplo, si se realiza una solicitud al setInstanceTags method , la solicitud regresa con 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")
  $value
  

El resultado es similar al siguiente:

  http-server
  db-client
  

También puede realizar una solicitud de 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")
  $value
  

El servidor de metadatos devuelve los nuevos contenidos si hay algún cambio:

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

Utilice etiquetas ET

Cuando envía una consulta wait-for-change , el servidor de metadatos devuelve una respuesta si algo ha cambiado en el contenido de esos metadatos. Sin embargo, existe una condición de carrera inherente entre una actualización de metadatos y la emisión de una solicitud wait-for-change , por lo que es útil tener una forma confiable de saber que está obteniendo el valor de metadatos más reciente.

Para ayudar con esto, puede usar el parámetro de consulta last_etag , que compara el valor de ETag que proporciona con el valor de ETag guardado en el servidor de metadatos. Si los valores de ETag coinciden, se acepta la solicitud wait-for-change . Si los valores de ETag no coinciden, esto indica que el contenido de los metadatos ha cambiado desde la última vez que recuperó el valor de ETag y el servidor de metadatos regresa inmediatamente con este último valor.

Máquinas virtuales Linux

Para obtener el valor de ETag actual para una clave de metadatos, complete los siguientes pasos:

  1. Conéctese a su máquina virtual Linux.
  2. Realice una solicitud a esa clave e imprima los encabezados. Para hacer esto, use la herramienta curl con el indicador -v . Para obtener la ETag actual para una instancia de VM o una entrada de metadatos del proyecto, ejecute el siguiente comando:

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

    Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
    • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
    • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.

    Por ejemplo, el siguiente comando obtiene el valor ETag actual para 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 es 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
  3. Luego puede usar ese valor de ETag con el comando de la herramienta curl en su solicitud wait-for-change . Para utilizar el valor de ETag para la solicitud wait-for-change de metadatos de instancia o proyecto, ejecute 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"
      

    Reemplace lo siguiente:

    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.
    • ETAG : el valor de ETag para la clave de metadatos.

    En este ejemplo, el siguiente comando utiliza el valor ETag para 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 especificado y, si ese valor cambia, la solicitud regresa con el nuevo contenido de su clave de metadatos.

Máquinas virtuales de Windows

Para obtener el valor de ETag actual para una clave de metadatos, complete los siguientes pasos:

  1. Conéctese a su máquina virtual Windows.
  2. Realice una solicitud a esa clave e imprima los encabezados. En Windows, utilice el comando Invoke-WebRequest . Para obtener la ETag actual para una instancia de VM o una entrada de metadatos del proyecto, ejecute el siguiente comando:

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

    $value.Headers.ETag

    Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
    • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
    • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.

    Por ejemplo, el siguiente comando obtiene el valor ETag actual para 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 es 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

  3. Luego puede usar ese valor de ETag en su solicitud wait-for-change . Para utilizar el valor de ETag para la solicitud wait-for-change de metadatos de instancia o proyecto, ejecute 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")
      $value
      

    Reemplace lo siguiente:

    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.
    • ETAG : el valor de ETag para la clave de metadatos.

    En este ejemplo, el siguiente comando utiliza el valor ETag para 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")
      $value
      

    El servidor de metadatos coincide con el valor de ETag especificado y, si ese valor cambia, la solicitud regresa con el nuevo contenido de su clave de metadatos.

Pitón

El siguiente ejemplo de Python muestra cómo observar mediante programación el servidor de metadatos en busca de cambios.

Este ejemplo establece la ETag inicial en 0 . El servidor de metadatos no devuelve una respuesta con 0 como valor de ETag. Cuando se especifica 0 como la última ETag en una solicitud, el servidor de metadatos responde con el valor actual y la ETag. Esto ahorra un poco del código necesario para obtener el valor inicial y ETag.

last_etag = "0"

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

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

    last_etag = r.headers["etag"]

Establecer tiempos de espera

Si desea que su solicitud wait-for-change expire después de una cierta cantidad de segundos, puede configurar el parámetro timeout_sec . El parámetro timeout_sec limita el tiempo de espera de su solicitud a la cantidad de segundos que especificó y, cuando la solicitud alcanza ese límite, devuelve el contenido actual de la clave de metadatos.

Cuando configura el parámetro timeout_sec , la solicitud siempre regresa después del número de segundos especificado, independientemente de si el valor de los metadatos ha cambiado realmente o no. Sólo es posible establecer un valor entero para su tiempo de espera.

linux

  1. Conéctese a su máquina virtual Linux.
  2. Desde su máquina virtual Linux, utilice la herramienta curl para realizar una consulta. Para realizar una solicitud de wait-for-change con un valor de tiempo de espera para una instancia de VM o una entrada de metadatos del proyecto, ejecute 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"
      

    Reemplace lo siguiente:

    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.
    • TIMEOUT : el valor del tiempo de espera.

Por ejemplo, el siguiente comando realiza una solicitud de wait-for-change cuyo tiempo de espera se establece en 360 segundos:

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

ventanas

  1. Conéctese a su máquina virtual Windows.
  2. Desde su máquina virtual Windows, use el comando Invoke-RestMethod para realizar una consulta. Para realizar una solicitud de wait-for-change con un valor de tiempo de espera para una instancia de VM o una entrada de metadatos del proyecto, ejecute 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")
      $value
      

    Reemplace lo siguiente:

    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.
    • TIMEOUT : el valor del tiempo de espera.

Por ejemplo, el siguiente comando realiza una solicitud de wait-for-change cuyo tiempo de espera se establece en 360 segundos:

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

Consultar metadatos utilizando el punto final del servidor de metadatos HTTPS

El punto final 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 utilizar el punto final del servidor de metadatos HTTPS, revise los siguientes requisitos:

  • Debe solicitar acceso a la vista previa del punto final del servidor de metadatos HTTPS .

  • Después de agregar su proyecto a la lista de permitidos, puede crear la VM. La VM debe cumplir los siguientes requisitos:

    • El entorno invitado debe estar ejecutándose en la VM .
    • La VM debe ser una VM blindada. 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 confiable virtual (vTPM) para verificar los certificados.

Para obtener una descripción general de cómo se manejan las consultas al extremo del servidor de metadatos HTTPS, consulte Punto final del servidor de metadatos HTTPS . Puede realizar las mismas consultas al servidor de metadatos ya sea que utilice el punto final https o http. Sin embargo, para llamar al punto final https debe especificar la ruta a los certificados de identidad del cliente y, en algunos casos, al certificado raíz.

Los siguientes comandos demuestran cómo consultar el servidor de metadatos mediante el punto final https.

linux

  1. Conéctese a su máquina virtual Linux.

  2. Desde su máquina virtual Linux, utilice la herramienta curl para realizar una consulta y especificar el certificado de identidad del cliente. Opcionalmente, también puede 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"
    

    Reemplace lo siguiente:

    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.
    • 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 .

    Por ejemplo, para consultar la imagen de inicio de una VM, ejecute 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 al siguiente:

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

    Si ve un mensaje de error, revise la documentación de solución de problemas .

ventanas

  1. Conéctese a su máquina virtual Windows.

  2. Obtenga el certificado de identidad del cliente mediante 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" }
      
  3. Desde su máquina virtual Windows, use el comando Invoke-RestMethod y especifique 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
    

    Reemplace lo siguiente:

    • CLIENT_CERTIFICATE : la ruta al certificado de identidad del cliente en la VM. Esta es la variable $cert que se configuró en el paso anterior.
    • Reemplace PATH_TO_METADATA_ENTRY con la ruta a la instancia de VM o clave de metadatos del proyecto cuyo valor desea consultar. Si la clave está en un subdirectorio del directorio de instancia o 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, especifique project/project-id .
      • Para ver la clave de metadatos image , que se almacena en los metadatos de la instancia de VM, especifique instance/image .
      • Para ver enable-oslogin que se puede almacenar en el subdirectorio de atributos de los metadatos del proyecto o de la instancia de VM, especifique project/attributes/enable-oslogin o instance/attributes/enable-oslogin según su caso de uso.

    Por ejemplo, para consultar la imagen de inicio de una máquina virtual de Windows Server 2019, ejecute 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 al siguiente:

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

Limitaciones

  • El servidor de metadatos rechaza automáticamente cualquier solicitud que contenga el encabezado X-Forwarded-For . Este encabezado generalmente indica que la solicitud fue enviada por proxy y podría no ser una solicitud realizada por un usuario autorizado. Por razones de seguridad, todas estas solicitudes se rechazan.

  • Cuando utiliza el comando curl para recuperar metadatos del servidor, tenga en cuenta que algunos caracteres codificados no son compatibles con la ruta de 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 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"

    La siguiente tabla resume 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 realiza una solicitud al servidor de metadatos, el servidor de metadatos devuelve códigos de estado HTTP estándar para indicar el éxito o el fracaso. A veces, las condiciones de la red o los eventos del host pueden hacer que el servidor de metadatos falle su solicitud y devuelva un código de error. En estos casos, debe diseñar su aplicación para que sea tolerante a fallas y pueda reconocer y manejar estos errores.

Para obtener una lista detallada de los códigos de estado que se pueden devolver, consulte Solución de problemas de códigos de servidor .

Ver los metadatos personalizados para sus máquinas virtuales

Puedes ver los valores de metadatos personalizados para tus VM de Compute Engine de una de las siguientes maneras:

Ver metadatos del proyecto

Para ver metadatos personalizados que se aplican a todas las máquinas virtuales de su proyecto, utilice uno de los siguientes métodos.

Consola

  1. En la consola de Google Cloud, vaya a la página Metadatos .

    Ir a la página de Metadatos

    En la página de metadatos , ve una lista de todas las entradas de metadatos de proyecto personalizados para su proyecto.

nube de gcloud

Use el gcloud compute project-info describe el comando para consultar metadatos del proyecto:

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

El resultado es similar al siguiente:

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

DESCANSAR

Para consultar los metadatos del proyecto, cree una solicitud GET al método project.get .

Reemplace PROJECT_ID con su ID de proyecto.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID

El resultado es 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 metadatos personalizados que se aplican a todas las instancias de VM en una zona específica en un proyecto, use uno de los siguientes métodos.

nube de gcloud

Para consultar los metadatos zonales personalizados, use el Comando gcloud compute project-zonal-metadata describe .

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

Reemplace lo siguiente:

  • PROJECT_ID : ID de tu proyecto
  • ZONE : la zona para la que desea ver los metadatos zonales.

El resultado es similar al siguiente:

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

DESCANSAR

Para consultar los metadatos zonales personalizados, realice una solicitud GET a los instanceSettings().get método

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings

Reemplace lo siguiente:

  • PROJECT_ID : ID de tu proyecto
  • ZONE : la zona para la que desea ver los metadatos zonales.

El resultado es similar al siguiente:

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

Ver metadatos de instancia

Para ver metadatos que se aplican a una sola VM en su proyecto, use uno de los siguientes métodos.

Consola

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Haga clic en el nombre de la VM para el que desea ver metadatos.

    • Claves SSH para esta VM . En la sección de seguridad y acceso , vea el campo de teclas SSH .

      • Un valor de None indica que no hay claves SSH almacenadas en metadatos de instancia.

      • Cualquier otro valor indica que hay claves SSH almacenadas en metadatos de instancia.

    • Cayos SSH para un proyecto . En la sección de seguridad y acceso , vea el campo Bloque de teclas SSH de todo el proyecto .

      • Un valor de On indica que el valor de los metadatos clave block-project-ssh-keys es TRUE en los metadatos de caso.

      • Un valor de Off indica que el valor de la block-project-ssh-keys es FALSE o que la clave no está establecida.

    • Todos los demás metadatos personalizados . Ver la sección Metadatos personalizados . Ves todas las teclas y valores de metadatos personalizados, aparte de los metadatos de clave SSH.

nube de gcloud

Use las gcloud compute instances describe el comando para consultar metadatos de instancia:

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

Reemplace VM_NAME con el nombre de la VM para la que desea encontrar metadatos.

El resultado es similar al siguiente:

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

DESCANSAR

Para consultar metadatos para una VM específica, envíe una solicitud GET al método instances.get .

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

El resultado es similar al siguiente:

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

Reemplace lo siguiente:

  • PROJECT_ID : ID de tu proyecto
  • ZONE : la zona donde se encuentra la VM
  • VM_NAME : el nombre de la VM

¿Qué sigue?