Lors de la mise à jour de ressources (requêtes PATCH), Google Cloud les API utilisent souvent un
masque de mise à jour (com.google.protobuf.FieldMask). Cela indique au serveur
exactement les champs que vous souhaitez mettre à jour, ce qui évite l'écrasement accidentel d'
autres champs.
Si vous ne fournissez pas de masque, certaines API mettent à jour tous les champs et rétablissent les valeurs par défaut pour ceux qui manquent.
Créer un FieldMask
import com.google.cloud.secretmanager.v1.Secret;
import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;
import com.google.cloud.secretmanager.v1.UpdateSecretRequest;
import com.google.protobuf.FieldMask;
try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) {
// Prepare the resource with NEW values
Secret secret = Secret.newBuilder()
.setName("projects/my-project/secrets/my-secret")
.putLabels("env", "production") // We only want to update this field
.build();
// Create the FieldMask
// Paths MUST match the protobuf field names (snake_case)
FieldMask updateMask = FieldMask.newBuilder()
.addPaths("labels")
.build();
// Prepare the Request object
UpdateSecretRequest request = UpdateSecretRequest.newBuilder()
.setSecret(secret)
.setUpdateMask(updateMask)
.build();
// Call the API
client.updateSecret(request);
}