Beim Aktualisieren von Ressourcen (PATCH-Anfragen) verwenden Google Cloud -APIs häufig eine Aktualisierungsmaske (com.google.protobuf.FieldMask). Dadurch wird dem Server genau mitgeteilt, welche Felder Sie aktualisieren möchten. So wird verhindert, dass andere Felder versehentlich überschrieben werden.
Wenn Sie keine Maske angeben, werden in einigen APIs alle Felder aktualisiert und fehlende Felder auf Standardwerte zurückgesetzt.
FieldMask erstellen
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);
}