업데이트 마스크 관리

리소스 (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);
}