리소스 업데이트 시 (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);
}