リソースを更新する場合(PATCH リクエスト)、 Google Cloud API は多くの場合、
更新マスク(com.google.protobuf.FieldMask)を使用します。これにより、更新するフィールドをサーバーに
正確に伝え、
他のフィールドが誤って上書きされるのを防ぐことができます。
マスクを指定しない場合、一部の API はすべてのフィールドを更新し、欠落しているフィールドをデフォルト値にリセットします。
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);
}