Cada entrada de metadatos se almacena en el servidor de metadatos como pares clave-valor. Las claves de metadatos distinguen entre mayúsculas y minúsculas. Las claves pueden ser claves de metadatos predefinidas o personalizadas.
Los metadatos personalizados te permiten crear y usar tus propios pares clave-valor de metadatos en una VM o un proyecto concretos. Puede añadir nuevas claves de metadatos personalizados, actualizar los valores de las claves que ya tenga y eliminar las entradas de metadatos personalizados que no necesite. Definir metadatos personalizados es útil para transferir valores arbitrarios a las VMs de un proyecto. También es útil para crear secuencias de comandos de inicio y apagado.
En este documento se explica cómo hacer lo siguiente:
- Añadir o actualizar metadatos personalizados en máquinas virtuales
- Eliminar metadatos personalizados de las VMs
Antes de empezar
- 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.
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. 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.
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 obtener los permisos que necesitas para definir o quitar metadatos personalizados en las VMs, 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 definir o quitar metadatos personalizados en las VMs. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para definir o quitar metadatos personalizados en VMs, se necesitan los siguientes permisos:
-
Si tus VMs usan cuentas de servicio:
iam.serviceAccounts.actAs
-
Para añadir, actualizar o quitar metadatos de proyecto personalizados, sigue estos pasos:
-
compute.projects.get
-
compute.projects.setCommonInstanceMetadata
-
-
Para añadir, actualizar o quitar metadatos zonales personalizados, sigue estos pasos:
-
compute.instanceSettings.get
-
compute.instanceSettings.update
-
-
Para añadir, actualizar o quitar metadatos de instancia personalizados, sigue estos pasos:
-
compute.instances.get
-
compute.instances.setMetadata
-
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Limitaciones
Las entradas de metadatos de VM tienen las siguientes limitaciones.
Limitaciones de tamaño
Compute Engine aplica un límite total combinado de 512 KB para todas las entradas de metadatos. También se aplican límites de tamaño máximo a cada
key
yvalue
de la siguiente manera:- Cada metadato
key
tiene un límite máximo de 128 bytes. - Cada metadato
value
tiene un límite máximo de 256 KB.
Por ejemplo, las claves SSH se almacenan como metadatos personalizados en la clave
ssh-keys
. Si el contenido de los metadatos o elvalue
de esta clave supera el límite de 256 KB, no podrás añadir más claves SSH. Si alcanzas este límite, te recomendamos que elimines las claves que no utilices para liberar espacio de metadatos para las nuevas claves.Además, si proporcionas el contenido de las secuencias de comandos de inicio o de cierre directamente, el contenido de estas secuencias también se puede almacenar como metadatos personalizados y se tendrá en cuenta para estos límites de tamaño. Para evitarlo, almacena tu secuencia de comandos de inicio o de apagado como un archivo alojado en una ubicación externa, como Cloud Storage, y proporciona la URL de la secuencia de comandos de inicio al crear una VM. De esta forma, estos archivos se descargan en la VM en lugar de almacenarse en el servidor de metadatos.
Limitaciones de las mayúsculas y minúsculas de las cadenas
En cada metadato
key
se distingue entre mayúsculas y minúsculas.Cada metadato
value
distingue entre mayúsculas y minúsculas, excepto los valores booleanos.
Limitaciones de los metadatos zonales
Solo puedes definir y quitar metadatos zonales con la CLI de gcloud o REST.
No puedes crear dos claves de metadatos independientes con la misma cadena, aunque las claves se escriban con diferentes formatos. Por ejemplo, si ya existe una clave de metadatos personalizada llamada
zonal-metadata-key
para los metadatos zonales de una zona específica, no podrá crear nuevas claves de metadatos zonales que sean variaciones de la misma cadena, comoZonal-Metadata-Key
oZONAL-METADATA-KEY
.No puedes definir valores de metadatos zonales para las claves SSH, que se almacenan como metadatos personalizados en la clave
ssh-keys
.
valores booleanos
En los campos que aceptan valores booleanos (
TRUE
oFALSE
), también se pueden usar los siguientes valores:Estado Valores alternativos TRUE
Y
,Yes
,1
FALSE
N
,No
,0
Los valores booleanos no distinguen entre mayúsculas y minúsculas. Por ejemplo, puedes usar
False
,false
oFALSE
para inhabilitar una función.Definir metadatos personalizados en VMs
En esta sección se explica cómo añadir metadatos personalizados o actualizar los valores de los metadatos personalizados de tus VMs de Compute Engine de una de las siguientes formas:
- Definir metadatos de proyecto personalizados para añadir o actualizar metadatos de proyecto personalizados de todas las VMs de tu proyecto.
- Establece metadatos zonales personalizados para añadir o actualizar metadatos personalizados con un ámbito zonal para las VMs del proyecto.
- Definir metadatos de instancia personalizados para añadir o actualizar metadatos de instancia personalizados de una VM específica.
Definir metadatos de proyecto personalizados
Puedes añadir o actualizar los metadatos personalizados de todas las instancias de un proyecto mediante la Google Cloud consola, la CLI de Google Cloud o REST.
Sigue estas instrucciones para aplicar la configuración de metadatos a todas las VMs del proyecto. Por ejemplo, si define un par de metadatos de proyecto
baz=bat
, ese par de metadatos se aplica automáticamente a todas las VMs del proyecto.Consola
En la Google Cloud consola, ve a la página Metadatos.
En la parte superior de la página, haz clic en
Editar.Para añadir nuevas entradas de metadatos de proyectos personalizados, haga lo siguiente:
- Desplázate hasta la parte inferior de la página y haz clic en Añadir elemento.
- En el campo Clave, introduce el nombre de tu clave de metadatos personalizada.
- En el campo Valor, introduzca el valor de los metadatos del proyecto personalizado.
- Opcional. Para añadir más entradas de metadatos de proyecto personalizados, repite los pasos anteriores por cada entrada de metadatos que quieras añadir.
- Para terminar de añadir las entradas de metadatos de proyecto personalizados, haz clic en Guardar.
Para editar las entradas de metadatos de proyectos personalizados, siga estos pasos:
- Desplázate hasta la entrada de metadatos que quieras editar.
- Para actualizar el nombre de una clave de metadatos personalizada específica, en el campo Clave de esa entrada, introduzca el nuevo nombre.
- Para actualizar el valor de una entrada de metadatos de proyecto personalizada, en el campo Valor de esa entrada, introduzca el nuevo valor.
- Opcional. Para eliminar una entrada de metadatos de proyecto personalizada específica, haz clic en el icono de eliminar situado junto a la entrada de metadatos.
- Para editar varias entradas de metadatos de proyectos personalizados, repite los pasos anteriores con cada entrada de metadatos que quieras editar.
- Para terminar de editar las entradas de metadatos del proyecto personalizado, haz clic en Guardar.
gcloud
Usa el comando
project-info add-metadata
.gcloud compute project-info add-metadata \ --metadata=KEY=VALUE
Haz los cambios siguientes:
KEY
: el nombre de la clave de metadatosVALUE
: el valor almacenado para esta clave
Ejemplo
Por ejemplo, para definir dos entradas nuevas,
foo=bar
ybaz=bat
, en un proyecto, ejecuta el siguiente comando:gcloud compute project-info add-metadata \ --metadata=foo=bar,baz=bat
También puedes especificar uno o varios archivos de los que leer los metadatos mediante la marca
--metadata-from-file
.REST
Opcional. Para realizar un bloqueo optimista, puedes proporcionar una huella digital.
Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine. La huella digital cambia después de cada solicitud y, si proporcionas una huella digital que no coincide, se rechazará tu solicitud.
Si no proporcionas una huella digital, no se realizará ninguna comprobación de coherencia y la solicitud
projects().setCommonInstanceMetadata
se completará correctamente. Este comportamiento es diferente de los métodosinstances().setMetadata
yinstanceSettings().patch
, en los que siempre se requiere una huella digital.Para obtener la huella digital actual de un proyecto, llama al método
project().get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
El resultado debería ser similar al siguiente:
{ "name": "myproject", "commonInstanceMetadata": { "kind": "compute#metadata", "fingerprint": "FikclA7UBC0=", ... } }
Haz una solicitud al método
projects().setCommonInstanceMetadata
y define tus pares clave-valor de metadatos personalizados:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "fingerprint": "FikclA7UBC0=", "items": [ { "key": "foo", "value": "bar" } ] }
Sustituye
PROJECT_ID
por el ID de tu proyecto.Definir metadatos zonales personalizados
Cuando defines metadatos zonales personalizados, añades o actualizas las entradas de metadatos zonales de tus VMs en una zona específica de un proyecto. Puede hacer lo siguiente configurando metadatos zonales personalizados:
- Crea claves de metadatos personalizadas para una zona específica de un proyecto y define los metadatos de todas las VMs de esa zona en ese proyecto.
- Actualiza los valores de las entradas de metadatos zonales personalizados de todas las VMs de una zona específica de un proyecto.
- En el caso de las claves de metadatos personalizados que ya tengan valores de metadatos de proyecto, anula esos valores en zonas específicas y define metadatos zonales. Una vez que haya definido los metadatos zonales de esas claves en una zona específica, todas las máquinas virtuales de esa zona y de ese proyecto usarán los valores de metadatos zonales de esas claves.
Qué debes tener en cuenta antes de definir metadatos zonales personalizados
Las entradas de metadatos de proyectos y zonales se almacenan en el mismo directorio
project/
. Si asignas valores diferentes a las mismas claves de metadatos personalizados para las VMs a nivel de proyecto y a nivel de zona, los valores de los metadatos de zona de esas claves tendrán prioridad sobre los valores de los metadatos de proyecto en las zonas correspondientes.- Si añades un valor de metadatos zonales a una clave de metadatos que ya tiene un valor de metadatos del proyecto, Compute Engine sustituye el valor de metadatos del proyecto por el valor zonal en las VMs de la zona especificada y actualiza el directorio
/project
con el valor zonal. - Si añade un nuevo valor de metadatos de proyecto a una clave de metadatos que ya tiene un valor de metadatos zonales, no se producirá ningún cambio. Compute Engine conserva el valor de los metadatos zonales en el directorio
/project
de la zona específica. - Si no especifica un valor de metadatos zonales para una clave de metadatos personalizada en una zona específica, pero la clave tiene un valor de metadatos del proyecto, sus VMs seguirán teniendo los valores de metadatos del proyecto en esas zonas.
Procedimiento
Puedes añadir o actualizar los metadatos zonales personalizados en una zona específica de un proyecto mediante la CLI de Google Cloud o REST.
gcloud
Para añadir o actualizar metadatos zonales personalizados, usa el comando
gcloud compute project-zonal-metadata add
.gcloud compute project-zonal-metadata add \ --zone=ZONE \ --project=PROJECT_ID \ --metadata=KEY1=VALUE1,KEY2=VALUE2,...
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona en la que quieras añadir o actualizar los metadatos zonales.KEY1
,KEY2
...: las claves de metadatos personalizadas para las que quiere añadir o actualizar valores de metadatos zonales.VALUE1
,VALUE2
...: los valores de metadatos zonales que quieras definir para tus claves de metadatos personalizadas nuevas y actuales. En función de la clave y el valor de los metadatos personalizados, ocurrirá una de las siguientes acciones:Si la clave de metadatos personalizada correspondiente es una clave que ya tiene metadatos del proyecto, en la zona especificada, Compute Engine sustituye el valor de los metadatos del proyecto de la clave por el valor de los metadatos zonales que hayas especificado. Todas las VMs de la zona especificada del proyecto heredarán los metadatos zonales recién especificados para esa clave, mientras que las VMs de otras zonas seguirán conservando los valores de los metadatos zonales o del proyecto que tuvieran. Si actualizas el valor de los metadatos del proyecto de esta clave, las VMs de esta zona del proyecto no se verán afectadas y seguirán usando el valor de los metadatos zonales de esta clave.
Si la clave de metadatos personalizada correspondiente es una clave de metadatos nueva que no se usa en los metadatos de proyecto o zonales, Compute Engine crea la clave de metadatos personalizada y define este valor como los metadatos zonales de la zona especificada.
Si la clave de metadatos personalizada correspondiente es una clave de metadatos que ya existe y tiene un valor de metadatos zonales en la zona especificada:
- Si el valor de metadatos especificado es diferente del valor actual, Compute Engine actualiza la entrada de metadatos zonales con el nuevo valor.
- Si el valor de metadatos especificado es el mismo que el valor actual, la entrada de metadatos zonales no cambia.
Ejemplo: Añadir una nueva entrada de metadatos zonales personalizados
Por ejemplo, supongamos que tienes un proyecto llamado
my-project
con los siguientes metadatos personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"value-1"
y"key-2":"value-2"
Para añadir
"key-4":"value-4"
como un nuevo par de metadatos zonales personalizados en la zonaus-central1-a
, ejecuta el siguiente comando:gcloud compute project-zonal-metadata add \ --metadata=key-4=value-4 \ --project=my-project \ --zone=us-central1-a
Ejemplo: Actualizar los valores de una entrada de metadatos zonales personalizada
Consideremos el mismo proyecto de ejemplo
my-project
, que ahora tiene los siguientes metadatos personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"value-1"
,"key-2":"value-2"
y"key-4":"value-4"
Para actualizar los valores de metadatos zonales de
key-1
ykey-4
en la zonaus-cerntral1-a
con valores nuevos, ejecuta el siguiente comando.gcloud compute project-zonal-metadata add \ --metadata=key-1=new-value-1,key-4=new-value-4 \ --project=my-project \ --zone=us-central1-a
Ejemplo: Anular el valor de metadatos del proyecto de una clave y usar un valor de metadatos zonales
Consideremos el mismo proyecto de ejemplo
my-project
, que ahora tiene los siguientes metadatos personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"new-value-1"
,"key-2":"value-2"
y"key-4":"new-value-4"
En este proyecto de ejemplo, considera
key-3
, que tiene un valor de metadatos de proyecto devalue-c
. Supongamos que quieres definir un valor de metadatos zonalesvalue-3
para esta clave en todas las VMs de la zonaus-central1-a
. Cuando realices la operación, en todas las VMs de la zonaus-central1-a
, Compute Engine anulará los valores de los metadatos del proyecto y usará los valores de los metadatos zonales. Las máquinas virtuales de las demás zonas del proyecto conservan los valores de metadatos de proyecto o de zona vigentes parakey-3
.Para anular el valor de metadatos del proyecto de
key-3
y definir un valor de metadatos zonales, ejecuta el siguiente comando:gcloud compute project-zonal-metadata add \ --metadata=key-3=value-3 \ --project=my-project \ --zone=us-central1-a
REST
Obtén la huella digital actual y consulta los pares clave-valor del proyecto en esa zona.
Para realizar un bloqueo optimista, debes proporcionar una huella digital. Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine. La huella digital cambia cada vez que haces una solicitud para añadir, actualizar o eliminar metadatos zonales. Si proporcionas una huella digital que no coincide, Compute Engine rechazará tu solicitud.
Si no proporcionas una huella digital, se realizará una comprobación de coherencia y tu solicitud de actualización no se completará. De esta forma, solo se puede hacer una solicitud a la vez, lo que evita colisiones. Este comportamiento coincide con
instances().setMetadata
, donde siempre se requiere una huella digital.Para obtener la huella digital actual de los metadatos zonales, 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 en la que quieres definir los metadatos zonales.
A continuación se muestra un ejemplo de resultado de esta solicitud:
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { ... } }
Para añadir o actualizar los metadatos zonales, haz una solicitud
PATCH
al métodoinstanceSettings().patch
. Debes proporcionar lo siguiente con tu solicitud:Una máscara de actualización. Usa el parámetro de consulta
update_mask
. La máscara de actualización debe contener las claves de metadatos de lo siguiente:- Los nuevos metadatos zonales personalizados que quieras añadir
- Los metadatos zonales personalizados cuyos valores quieres actualizar
Debes añadir la cadena
metadata.items.
como prefijo de cada clave. Por ejemplo,metadata.items.key1,metadata.items.key3
.En el cuerpo de la solicitud, proporciona lo siguiente:
- Las claves y los valores de metadatos de la nueva zona personalizada que quieras añadir
- Las claves y los valores de metadatos de zona personalizados que quiere actualizar
- El valor de huella digital actual
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS { "fingerprint": "FINGER_PRINT", "metadata": { "items": { "KEY1": "VALUE1", "KEY2": "VALUE2", ... } } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto.ZONE
: la zona en la que quieres definir los metadatos zonales.PREFIXED_METADATA_KEYS
: la lista de claves de metadatos de lo siguiente, donde cada clave tiene el prefijo de la cadenametadata.items.
:- Los nuevos metadatos zonales personalizados que quieras añadir
- Los metadatos zonales personalizados que ya existen y cuyos valores quieres actualizar.
Por ejemplo, supongamos que las claves de metadatos zonales actuales de una zona específica son
key-1
ykey-2
. Si quiere añadir una clave nueva,key-3
, para los metadatos zonales de esa zona y también actualizar los metadatos zonales de una de las claves,key-1
, su máscara de actualización debe tener la siguiente cadena:metadata.items.key1,metadata.items.key3
FINGER_PRINT
: el valor actual de la huella digital.KEY1
,KEY2
...: las claves de metadatos zonales personalizadas a las que quieras añadir o actualizar valores. Especifica todas las claves de metadatos zonales personalizadas que hayas especificado en la máscara de actualización.VALUE1
,VALUE2
...: los valores de metadatos zonales que quieras definir para tus claves de metadatos personalizadas nuevas y actuales. En función de la clave y el valor de los metadatos personalizados, ocurrirá una de las siguientes acciones:- Si la clave de metadatos personalizada correspondiente es una clave que ya tiene metadatos del proyecto, en la zona especificada, Compute Engine sustituye el valor de los metadatos del proyecto de la clave por el valor de los metadatos zonales que hayas especificado. Todas las VMs de la zona especificada del proyecto heredarán los metadatos zonales recién especificados para esa clave, mientras que las VMs de otras zonas seguirán conservando los valores de los metadatos zonales o del proyecto que tuvieran. Si actualizas el valor de los metadatos del proyecto de esta clave, las VMs de esta zona del proyecto no se verán afectadas y seguirán usando el valor de los metadatos zonales de esta clave.
- Si la clave de metadatos personalizada correspondiente es una clave de metadatos nueva que no se usa en los metadatos de proyecto o zonales, Compute Engine crea la clave de metadatos personalizada y establece este valor como metadatos zonales en la zona especificada.
Si la clave de metadatos personalizada correspondiente es una clave de metadatos que ya existe y tiene un valor de metadatos zonales en la zona especificada:
Si el valor de metadatos especificado es diferente del valor actual, Compute Engine actualiza la entrada de metadatos zonales con el nuevo valor.
Si el valor de metadatos especificado es el mismo que el valor actual, la entrada de metadatos zonales no cambia.
Ejemplo: Añadir una nueva entrada de metadatos zonales personalizados
Por ejemplo, supongamos que tienes un proyecto llamado
my-project
con los siguientes metadatos personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"value-1"
y"key-2":"value-2"
Para añadir
"key-4":"value-4"
como un nuevo par de metadatos zonales personalizados en la zonaus-central1-a
, haz la siguiente solicitudPATCH
:PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-4 { "fingerprint": "VlRIl8dx9vk=", "metadata": { "items": { "key-4": "value-4" } } }
Ejemplo: Actualizar los valores de una entrada de metadatos zonales personalizada
Consideremos el mismo proyecto de ejemplo
my-project
, que ahora tiene los siguientes metadatos personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"value-1"
,"key-2":"value-2"
y"key-4":"value-4"
Para actualizar los valores de metadatos zonales de
key-1
ykey-4
en la zonaus-cerntral1-a
con nuevos valores, haz la siguiente solicitudPATCH
:PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-4 { "fingerprint": "VlRIl8dx9vk=", "metadata": { "items": { "key-1": "new-value-1", "key-4": "new-value-4" } } }
Ejemplo: Anular el valor de metadatos del proyecto de una clave y definir un valor de metadatos zonales
Consideremos el mismo proyecto de ejemplo
my-project
, que ahora tiene los siguientes metadatos personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"new-value-1"
,"key-2":"value-2"
y"key-4":"new-value-4"
En este proyecto de ejemplo, considera
key-3
, que tiene un valor de metadatos de proyecto devalue-c
. Supongamos que quieres definir un valor de metadatos zonalesvalue-3
para esta clave en todas las VMs de la zonaus-central1-a
. Cuando realices la operación, en todas las VMs de la zonaus-central1-a
, Compute Engine anulará los valores de los metadatos del proyecto y usará los valores de los metadatos zonales. Las máquinas virtuales de las demás zonas del proyecto conservan los valores de metadatos de proyecto o de zona vigentes parakey-3
.Para anular el valor de los metadatos del proyecto de
key-3
y usar el valor de los metadatos zonalesvalue-3
, haz la siguiente solicitudPATCH
:PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-3 { "fingerprint": "VlRIl8dx9vk=", "metadata": { "items": { "key-3": "value-3" } } }
Definir metadatos de instancia personalizados
Puedes añadir o actualizar los metadatos personalizados de una sola instancia de VM mediante la Google Cloud consola, la CLI de Google Cloud o REST.
Puedes definir metadatos de instancia personalizados de una de las siguientes formas:
- En el caso de las VMs nuevas, puedes añadir metadatos personalizados cuando se cree la VM.
- En el caso de las VMs, puedes añadir o actualizar metadatos personalizados cuando la VM esté en ejecución.
Añadir metadatos de instancia personalizados durante la creación de una VM
Sigue estas instrucciones para añadir metadatos a una instancia de VM específica en el momento de su creación.
Consola
En la Google Cloud consola, ve a la página Crear una instancia.
Especifica los detalles de la VM.
Despliega la sección Opciones avanzadas y haz lo siguiente:
- Despliega la sección Gestión.
- Para añadir varios pares clave-valor a los metadatos personalizados, en la sección Metadatos, haga clic en Añadir elemento.
Para crear la VM, haz clic en Crear.
gcloud
Para definir metadatos personalizados, utilice el comando
gcloud compute instances create
con la marca--metadata
.gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-project=IMAGE_PROJECT \ IMAGE_FLAG \ --metadata=KEY=VALUE
Haz los cambios siguientes:
VM_NAME
: el nombre de tu VMZONE
: la zona en la que se creará la VMIMAGE_PROJECT
: el proyecto que contiene la imagen que se va a usar en la VMIMAGE_FLAG
: especifica una de las siguientes opciones:Usa la marca
--image IMAGE_NAME
para especificar una versión concreta de una imagen pública.Por ejemplo,
--image debian-12-bookworm-v20241112
.Usa la marca
--image-family IMAGE_FAMILY_NAME
para especificar una familia de imágenes.De esta forma, se crea la VM a partir de la imagen de SO no obsoleta más reciente de la familia de imágenes. Por ejemplo, si especificas
--image-family debian-12
, Compute Engine usa la versión más reciente de la imagen del SO en la familia de imágenes de Debian 12.
KEY
: el nombre de la clave de metadatosVALUE
: el valor almacenado para esta clave
Ejemplo
Por ejemplo, para definir una nueva clave
env
que tenga el valortest
en una máquina virtual llamadaexample-instance
, ejecuta el siguiente comando:gcloud compute instances create example-instance \ --zone=us-central1-a --image-project=debian-cloud \ --image-family=debian-12 \ --metadata=env=test
REST
Usa el método
instances.insert
y proporciona los metadatos personalizados como parte de la propiedadmetadata
de tu solicitud:POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME
", "...": [ { } ], "metadata": { "items": [ { "key": "KEY", "value": "VALUE" } ] }, .. }Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: zona en la que se creará la VMMACHINE_TYPE
: tipo de máquina, predefinido o personalizado, para la nueva VM.VM_NAME
: nombre de la nueva máquina virtualKEY
: el nombre de la clave de metadatosVALUE
: el valor almacenado para esta clave
Añadir o actualizar metadatos de instancia personalizados en una VM
Sigue estas instrucciones para actualizar los metadatos de una instancia de VM específica que ya exista.
Consola
- En la consola de Google Cloud , ve a la página Instancias de VM.
- Haga clic en la instancia de la que quiera actualizar los metadatos.
- Haz clic en el botón Editar que se encuentra en la parte superior de la página.
- En Metadatos personalizados, haga clic en Añadir elemento o edite las entradas de metadatos que ya haya.
- Guarda los cambios.
gcloud
Actualizar los metadatos de una VM con la CLI de gcloud es una acción acumulativa. Especifique solo las claves de metadatos que quiera añadir o cambiar. Si ya existe una clave que has proporcionado, el valor de esa clave se actualizará con el nuevo valor.
Usa el comando
instances add-metadata
:gcloud compute instances add-metadata VM_NAME \ --metadata=KEY=VALUE,KEY=VALUE
Haz los cambios siguientes:
VM_NAME
: el nombre de tu VMKEY
: el nombre de la clave de metadatosVALUE
: el valor almacenado para esta clave
Ejemplos
Si quieres añadir la entrada
foo=bar
, usa:gcloud compute instances add-metadata VM_NAME \ --metadata=foo=bar
Si quieres cambiar la entrada
foo=bar
porfoo=bat
, usa lo siguiente:gcloud compute instances add-metadata VM_NAME \ --metadata=foo=bat
REST
Obtiene la huella digital actual y ve los pares clave-valor de la VM. Para ello, llama al método
instances().get
.Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine que se usa para realizar un bloqueo optimista. Para actualizar la máquina virtual, debes proporcionar el valor de huella digital correspondiente. La huella digital cambia después de cada solicitud y, si proporcionas una huella digital que no coincide, tu solicitud se rechazará. De esta forma, solo se puede hacer una actualización a la vez, lo que evita colisiones.
GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAMEHaz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona en la que se encuentra tu VMVM_NAME
: nombre de tu VM
El resultado debería ser similar al siguiente:
{ ... "name": "example-instance", "metadata": { "kind": "compute#metadata", "fingerprint": "zhma6O1w2l8=" "items": [ { "key": "foo", "value": "bar" } ] }, ... }
Realiza una solicitud al método
instances().setMetadata
. Proporciona una lista de los nuevos valores de metadatos y el valor defingerprint
actual.Si la VM tiene pares clave-valor que quiere conservar, debe incluirlos en esta solicitud junto con los nuevos pares clave-valor.
Ejemplo
POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAME/setMetadata { "fingerprint": "zhma6O1w2l8=", "items": [ { "key": "foo", "value": "bar" }, { "key": "baz", "value": "bat" } ] }Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona en la que se encuentra tu VMVM_NAME
: nombre de tu VM
Quitar metadatos personalizados de las VMs
En esta sección se explica cómo eliminar entradas de metadatos personalizados de tus máquinas virtuales de Compute Engine de una de las siguientes formas:
- Quitar metadatos de proyecto personalizados para quitar los metadatos personalizados que se hayan definido para todas las VMs de un proyecto.
- Elimina metadatos zonales personalizados para quitar los metadatos personalizados que se hayan definido para todas las VMs de una zona concreta de un proyecto.
- Quitar metadatos de instancia personalizados para quitar los metadatos de VM que se hayan definido para una VM específica.
Eliminar metadatos de proyectos personalizados
Puedes quitar metadatos de proyecto personalizados mediante la Google Cloud consola o la CLI de Google Cloud.
Consola
En la Google Cloud consola, ve a la página Metadatos.
En la parte superior de la página, haz clic en
Editar.Desplázate hasta la entrada de metadatos que quieras quitar y haz clic en el botón de eliminación
situado junto a esa entrada.Repite este paso con cada entrada de metadatos que quieras quitar.
Para terminar de quitar las entradas de metadatos del proyecto personalizado, haz clic en Guardar.
gcloud
Para quitar metadatos de proyecto personalizados, usa el comando
gcloud compute project-info remove-metadata
.- Si quiere quitar las entradas de metadatos personalizados de claves específicas, especifique esas claves con la marca
--keys
y excluya los valores de esas claves.
gcloud compute project-info remove-metadata \ --keys=KEY1,KEY2,...
- Si quieres quitar todos los metadatos personalizados de la VM, especifica la marca
--all
.
gcloud compute project-info remove-metadata \ --all
Haz los cambios siguientes:
KEY1
,KEY2
...: las claves de metadatos de instancia personalizadas que quieras quitar.
Quitar metadatos zonales personalizados
Puede eliminar metadatos zonales personalizados mediante la CLI de Google Cloud o REST.
gcloud
Para quitar metadatos zonales personalizados, usa el comando
gcloud compute project-zonal-metadata remove
y especifica todas las claves de metadatos que quieras quitar con la marca--keys
.gcloud compute project-zonal-metadata remove \ --project=PROJECT_ID \ --zone=ZONE \ --keys=KEY1,KEY2,...
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona de la que quieres quitar los metadatos zonales.KEY1
,KEY2
...: las claves de metadatos zonales personalizados que quieras quitar.
Después de ejecutar el comando, si alguna de las claves especificadas tiene valores de metadatos del proyecto disponibles, las VMs de la zona especificada heredarán esos valores de metadatos del proyecto. Si la entrada de metadatos se ha definido solo a nivel de zona y no hay ningún valor de metadatos de proyecto correspondiente a esa clave, las VMs de esa zona perderán esa información de metadatos.
Ejemplo:
Supongamos que tienes un proyecto de ejemplo
my-project
con los siguientes metadatos de proyecto personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"new-value-1"
,"key-2":"value-2"
,"key-3":"value-3"
y"key-4":"new-value-4"
Para eliminar todos los metadatos zonales de la zona
us-central1-a
, ejecuta el siguiente comando.gcloud compute project-zonal-metadata remove \ --metadata=key-1,key-2,key-3,key-4 \ --project=my-project \ --zone=us-central1-a
Después de ejecutar el comando, las VMs de la zona
us-central1-a
tendrán las siguientes entradas de metadatos de proyecto personalizados:"key-1":"value-a"
"key-2":"value-b"
"key-3":"value-c"
REST
Obtén la huella digital actual y consulta los pares clave-valor del proyecto en esa zona.
Para realizar un bloqueo optimista, debes proporcionar una huella digital. Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine. La huella digital cambia cada vez que haces una solicitud para añadir, actualizar o eliminar metadatos zonales. Si proporcionas una huella digital que no coincide, Compute Engine rechazará tu solicitud.
Si no proporcionas una huella digital, se realizará una comprobación de coherencia y tu solicitud de eliminación no se completará. De esta forma, solo se puede hacer una solicitud a la vez, lo que evita colisiones. Este comportamiento coincide con
instances().setMetadata
, donde siempre se requiere una huella digital.Para obtener la huella digital actual de un proyecto, llama al método
instanceSettings().get
.GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyectoZONE
: la zona de la que quieres quitar los metadatos zonales.
A continuación se muestra un ejemplo de resultado de esta solicitud:
{ "fingerprint": "FikclA7UBC0=", "metadata": { ... } }
Para quitar metadatos zonales personalizados, haz una solicitud
PATCH
al métodoinstanceSettings().patch
excluyendo del cuerpo de la solicitud las claves de metadatos de las que quieras quitar los metadatos zonales. Debes proporcionar la siguiente información con tu solicitud:Una máscara de actualización. Usa el parámetro de consulta
update_mask
. La máscara de actualización debe contener todas las claves de metadatos personalizados que quieras eliminar de los metadatos zonales. Debe añadir la cadenametadata.items.
como prefijo de cada clave; por ejemplo,metadata.items.key1,metadata.items.key3
.En el cuerpo de la solicitud, proporcione solo el valor de la huella digital actual. Excluye todas las claves de metadatos personalizados que hayas especificado en updateMask. Si incluye alguna de las claves de metadatos tanto en la máscara de actualización como en el cuerpo de la solicitud, Compute Engine no eliminará los metadatos zonales de esas claves.
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS { "fingerprint": "FINGER_PRINT", "metadata": { "items": { } } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto.ZONE
: la zona de la que quieres quitar los metadatos zonales.PREFIXED_METADATA_KEYS
: lista de todas las claves de metadatos personalizados que ya existen y de las que quieres quitar los metadatos zonales. Cada clave debe ir precedida de la cadenametadata.items.
. Para que tu solicitud de eliminación se complete correctamente, excluye estas claves de metadatos del cuerpo de la solicitud. Si incluye alguna de las claves de metadatos tanto en la máscara de actualización como en el cuerpo de la solicitud, Compute Engine no eliminará los metadatos zonales de esas claves.Por ejemplo, supongamos que las claves de metadatos actuales con metadatos zonales son
key-1
,key-2
,key-3
ykey-4
, y que quiere quitar las entradas de metadatos zonales dekey-1
ykey-2
. En ese caso, la máscara de actualización debe tener la siguiente cadena:metadata.items.key1,metadata.items.key2
FINGER_PRINT
: el valor actual de la huella digital.
Después de hacer la solicitud, si alguna de las claves especificadas tiene valores de metadatos del proyecto disponibles, las VMs de la zona especificada heredarán esos valores de metadatos del proyecto. Si la clave de metadatos se ha definido solo a nivel de zona y no hay ningún valor de metadatos de proyecto correspondiente a esa clave, las VMs de esa zona perderán esa información de metadatos.
Ejemplo:
Supongamos que tienes un proyecto de ejemplo
my-project
con los siguientes metadatos de proyecto personalizados:- Metadatos del proyecto:
"key-1":"value-a"
,"key-2":"value-b"
y"key-3":"value-c"
- Metadatos zonales de la zona
us-central1-a
:"key-1":"new-value-1"
,"key-2":"value-2"
,"key-3":"value-3"
y"key-4":"new-value-4"
Para quitar los metadatos zonales de
key-1
ykey-2
en la zonaus-central1-a
, haz la siguiente solicitudPATCH
.PATCH https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-2 { "fingerprint": "FikclA7UBC0=", "metadata": { "items": { } } }
Una vez que se haya procesado esta solicitud, las VMs de la zona
us-central1-a
tendrán los siguientes metadatos personalizados. Las VMs heredan los valores de los metadatos del proyecto dekey-1
ykey-2
, pero conservan los metadatos zonales dekey-3
ykey-4
.- Metadatos del proyecto:
"key-1":"value-a"
y"key-2":"value-b"
- Metadatos zonales de la zona
us-central1-a
:"key-3":"value-3"
y"key-4":"new-value-4"
Eliminar metadatos de instancia personalizados
Puedes quitar metadatos de instancia personalizados con la consola de Google Cloud, la CLI de Google Cloud o REST. Google Cloud
Consola
- En la consola de Google Cloud , ve a la página Instancias de VM.
- En la columna Nombre, haga clic en el nombre de la VM de la que quiera quitar metadatos.
- En la parte superior de la página, haz clic en Editar.
- En la sección Metadatos, haz clic en Eliminar elemento en cada una de las entradas de metadatos que quieras quitar.
- Para confirmar los cambios y quitar los metadatos de instancia personalizados, haga clic en Guardar.
gcloud
Para quitar metadatos de instancia personalizados, usa el comando
gcloud compute instances remove-metadata
.- Si quiere quitar las entradas de metadatos personalizados de claves específicas, especifique esas claves con la marca
--keys
y excluya los valores de esas claves.
gcloud compute instances remove-metadata VM_NAME \ --zone=ZONE \ --keys=KEY1,KEY2,...
- Si quieres quitar todos los metadatos personalizados de la VM, especifica la marca
--all
.
gcloud compute instances remove-metadata VM_NAME \ --zone=ZONE \ --all
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.ZONE
: la zona de tu VM.VM_NAME
: nombre de tu VMKEY1
,KEY2
...: las claves de metadatos de instancia personalizadas que quieras quitar.
REST
Obtiene la huella digital actual y ve los pares clave-valor de la VM. Para ello, llama al método
instances().get
.Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine que se usa para realizar un bloqueo optimista. Para actualizar la máquina virtual, debes proporcionar el valor de huella digital correspondiente. La huella digital cambia después de cada solicitud y, si proporcionas una huella digital que no coincide, tu solicitud se rechazará. De esta forma, solo se puede hacer una actualización a la vez, lo que evita colisiones.
GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAMEHaz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.ZONE
: la zona de tu VM.VM_NAME
: nombre de tu VM
El resultado debería ser similar al siguiente:
{ ... "name": "example-instance", "metadata": { "kind": "compute#metadata", "fingerprint": "zhma6O1w2l8=" "items": [ { "key": "key-1", "value": "value-1" } { "key": "key-2", "value": "value-2" } ] }, ... }
Realiza una solicitud al método
instances().setMetadata
. Debes incluir el valor de huella digital de metadatos actual para que tu solicitud se complete correctamente.Para quitar todos los pares clave-valor de metadatos personalizados de una VM, en la propiedad
items
, excluya las claves de metadatos de las que quiera quitar los valores de metadatos.POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAME/setMetadata { "fingerprint": "FINGER_PRINT" "items": [ { "key": "KEY1" "value": "VALUE1" } { "key": "KEY2" "value": "VALUE2" } ... ] }Para quitar todos los metadatos de instancia personalizados de la VM, excluye la propiedad
items
por completo.POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAME/setMetadata { "fingerprint": FINGER_PRINT }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.ZONE
: la zona de tu VM.VM_NAME
: nombre de tu VMFINGER_PRINT
: el valor actual de la huella digital.KEY1
,KEY2
...: las claves de metadatos de instancia personalizadas que quieras quitar.VALUE1
,VALUE2
...: los valores de las claves de metadatos de instancia personalizadas que quieras quitar.
Siguientes pasos
- Consulta cómo ver y consultar metadatos.
- Consulta más información sobre cómo ejecutar secuencias de comandos de inicio o secuencias de comandos de cierre en el servidor de metadatos.
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).
-