Cuando actualizas un recurso en Google Cloud, a menudo quieres modificar campos específicos sin reemplazar todo el recurso. Las bibliotecas cliente de Cloud para Rust admiten máscaras de campo para que puedas especificar qué campos modifica una operación de actualización y dejar todos los demás campos sin cambios.
Antes de comenzar
En este documento, se usa la API de Secret Manager, aunque los mismos conceptos se aplican a otros servicios de Google Cloud .
Antes de ejecutar el código de este documento, completa los siguientes requisitos previos:
- Sigue las instrucciones de Comienza a usar Rust para configurar tu entorno de desarrollo.
- Sigue las instrucciones de Crea y accede a un secreto con Secret Manager para habilitar la API de Secret Manager y configurar la autenticación.
Dependencias
El cajón google-cloud-wkt proporciona tipos conocidos para las APIs de Google Cloud,
incluido FieldMask. Agrega google-cloud-secretmanager-v1,
google-cloud-wkt, anyhow y tokio a tu archivo Cargo.toml:
cargo add google-cloud-secretmanager-v1 google-cloud-wkt anyhow
cargo add tokio --features macros,rt-multi-thread
Cómo funcionan las máscaras de campo
Un FieldMask contiene un conjunto de rutas de acceso de campos simbólicos que identifican qué campos
modifica una operación de actualización o qué campos devuelve una operación de lectura.
En una operación de actualización, el servicio cambia solo los campos que se indican en la máscara y omite los valores de los campos que no se indican en el mensaje de solicitud. Si omites la máscara de campo en una solicitud de actualización, la operación se aplica a todos los campos mutables.
Para restablecer un campo específico a su valor predeterminado, incluye la ruta de acceso del campo en la máscara y deja ese campo en su valor predeterminado en la estructura del recurso.
Actualiza los campos de un recurso
Para crear un Secret y actualizar de forma selectiva sus campos labels y annotations
con un FieldMask, completa los siguientes pasos:
Inicializa un cliente
SecretManagerServicey crea un secreto conlabelsyannotationsvacíos:Envía una solicitud
update_secretque establezcalabels,annotations, eletagactual para evitar que se reemplacen las actualizaciones simultáneas y una máscara de actualización que abarque"annotations"y"labels":La llamada
set_update_maskespecifica las rutas de campo exactas que se deben modificar:
El resultado confirma que la operación actualizó ambos campos:
labels: {"updated": "your-label"},
...
annotations: {"updated": "your-annotations"},
Completar código
La siguiente función combina la creación de secretos y la actualización de la máscara de campo:
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud y evitar
errores deALREADY_EXISTSen ejecuciones posteriores, borra el secreto
your-secretcuando termines.