Menggunakan konteks objek

Konteks objek adalah key-value pair kustom yang dapat Anda lampirkan ke objek Cloud Storage. Anda dapat menggunakan konteks objek untuk mengklasifikasikan data, melacak alur kerja pemrosesan, dan membantu memperkaya objek dengan metadata. Konteks ini tetap ada saat Anda menyalin, menulis, atau memulihkan objek.

Halaman ini menjelaskan cara melampirkan dan mengelola konteks pada objek Cloud Storage.

Mendapatkan peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk membuat dan mengelola konteks objek, minta administrator untuk memberi Anda peran IAM berikut pada objek:

  • Membuat objek dengan konteks: Storage Object Creator (roles/storage.objectCreator)
  • Melampirkan, memperbarui, melihat, dan menghapus konteks dari objek, serta melihat representasi konteks lengkap (termasuk data yang diperluas): Storage Object User (roles/storage.objectUser)
  • Melihat kunci dan nilai konteks: Storage Object Viewer (roles/storage.objectViewer)
  • Menghapus konteks objek selama operasi penulisan ulang, penyalinan, dan penyusunan: Storage Legacy Object Owner (roles/storage.legacyObjectOwner)

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat dan mengelola konteks objek. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat dan mengelola konteks objek:

  • Buat objek dengan konteks objek:
    • storage.objects.create
    • storage.objects.createContext
  • Melampirkan, memperbarui, dan menghapus konteks objek:
    • storage.objects.update
    • storage.objects.createContext
    • storage.objects.updateContext
    • storage.objects.deleteContext
  • Konteks pelepasan objek: storage.objects.dropContexts
  • Melihat konteks objek:
    • storage.objects.get
    • storage.objects.list
  • Melihat konteks lengkap objek, termasuk data yang diperluas (Pratinjau): storage.objects.viewFullContext

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Persyaratan penamaan untuk pasangan nilai kunci

Kunci dan nilai untuk konteks kustom harus memenuhi persyaratan berikut:

  • Harus terdiri dari 1 hingga 256 karakter, inklusif.

  • Harus diawali dengan karakter alfanumerik.

  • Harus berupa karakter UTF-8 yang valid. Sebagian besar karakter UTF-8 didukung, kecuali karakter berikut:

    • Tanda petik tunggal (')

    • Tanda kutip ganda (")

    • Garis miring terbalik (\)

    • Garis miring (/)

  • Kunci konteks yang diawali dengan awalan google: (misalnya, google:annotation:face-detector-v1) dicadangkan untuk konteks yang dibuat Google. Anda tidak dapat membuat konteks baru dengan awalan google: atau mengubah nilainya. Jika Anda mencoba melakukannya, Cloud Storage akan menampilkan error INVALID_ARGUMENT. Untuk menghapus konteks dengan awalan google:, Anda harus menghapusnya menggunakan parameter dropContextGroups selama operasi penulisan ulang.

Melampirkan konteks ke objek baru

Lampirkan konteks ke objek saat Anda mengupload objek baru ke bucket Cloud Storage. Setiap konteks terdiri dari kunci dan nilai.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Upload objek.

  3. Ikuti langkah-langkah untuk melampirkan konteks ke objek.

Command line

Untuk melampirkan konteks saat Anda mengupload objek dengan perintah gcloud storage cp, gunakan flag --custom-contexts:

gcloud storage cp OBJECT_LOCATION gs://DESTINATION_BUCKET_NAME --custom-contexts=KEY=VALUE,...

Dengan:

  • OBJECT_LOCATION adalah jalur lokal ke objek Anda. Contohnya, Desktop/employees.txt
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat Anda mengupload objek. Contoh, my-bucket.
  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci yang dipisahkan dengan koma.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

Atau, buat file JSON yang berisi konteks yang ingin Anda lampirkan ke objek, dan gunakan flag --custom-contexts-file:

  {
    "KEY": {
      "value": "VALUE"
    },
    ...
  }

Dengan:

  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

Untuk melampirkan konteks saat Anda mengupload direktori dengan perintah gcloud storage rsync, gunakan flag --custom-contexts atau flag --custom-contexts-file:

gcloud storage rsync DIRECTORY_LOCATION gs://DESTINATION_BUCKET_NAME --recursive --custom-contexts=KEY=VALUE,...

Dengan:

  • DIRECTORY_LOCATION adalah jalur lokal ke direktori Anda. Contoh, ~/my_directory.
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat Anda mengupload direktori. Contoh, my-bucket.
  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci yang dipisahkan dengan koma.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

JSON API

Untuk melampirkan konteks ke objek saat Anda mengupload objek baru, gunakan salah satu metode berikut:

Sebagai bagian dari metadata objek dalam format JSON, sertakan kolom contexts:

  {
    "contexts": {
      "custom": {
        "KEY": {
          "value": "VALUE"
        },
        ...
      }
    }
  }

Dengan:

  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci dalam objek custom.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

Melampirkan atau mengubah konteks pada objek yang ada

Anda dapat melampirkan konteks baru ke objek atau memperbarui konteks yang ada di bucket Cloud Storage.

Hanya layanan Google, seperti tugas pengayaan objek, yang dapat membuat dan melampirkan konteks dengan data yang diperluas, yang menggunakan awalan kunci google: yang dicadangkan. Anda tidak dapat melampirkan data yang diperluas ke konteks yang ditentukan pengguna, dan Anda tidak dapat membuat atau mengubah kunci konteks yang diawali dengan awalan google:. Jika Anda mencoba membuat atau mengubah kunci google:, Cloud Storage akan menampilkan error INVALID_ARGUMENT.

Jika konteks yang ada menyertakan data yang diperluas, Cloud Storage akan mempertahankan konteks tersebut pada objek yang diperbarui selama operasi update dan patch. Menetapkan nilai konteks ke null hanya akan menghapus konteks yang tidak memiliki data yang diperluas. Untuk melihat data yang diperluas, lihat Melihat konteks objek lengkap. Untuk menghapus konteks dengan data yang diperluas, termasuk konteks dengan awalan google:, Anda harus menghapusnya menggunakan parameter dropContextGroups selama operasi penulisan ulang.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang berisi objek.

  3. Buka objek, lalu klik Buka menu tambahan objek.

  4. Klik Edit contexts.

  5. Di panel Edit contexts, lakukan salah satu tindakan berikut:

    • Menambahkan konteks objek baru:

      1. Klik Add a custom context.

      2. Di kolom Object context key dan Object context value, masukkan pasangan nilai kunci baru.

      3. Klik Done.

      4. Opsional: Untuk menambahkan konteks objek tambahan, klik Tambahkan konteks kustom, ulangi langkah-langkah sebelumnya, lalu klik Simpan.

    • Mengedit konteks objek:

      1. Klik konteks objek.

      2. Perbarui kolom Object context key, kolom Object context value, atau keduanya.

      3. Klik Selesai, lalu klik Simpan.

    • Menghapus konteks objek:

      Klik Hapus, lalu klik Simpan.

Command line

Gunakan perintah gcloud storage objects update.

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME CUSTOM_CONTEXTS_FLAG

Dengan:

  • BUCKET_NAME adalah nama bucket yang berisi objek yang konteksnya ingin Anda edit. Contoh, my-bucket.
  • OBJECT_NAME adalah nama objek. Contoh, employees.txt.
  • CUSTOM_CONTEXTS_FLAG adalah salah satu flag berikut:

    • Untuk mengganti semua konteks yang ada, gunakan --custom-contexts=KEY=VALUE,... atau --custom-contexts-file=CUSTOM_CONTEXTS_FILE

      Dengan:

      • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci yang dipisahkan dengan koma.
      • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.
      • CUSTOM_CONTEXTS_FILE adalah jalur ke file JSON atau YAML yang berisi konteks yang ingin Anda lampirkan ke objek.
    • Untuk menghapus semua konteks yang ada, gunakan flag --clear-custom-contexts.

    • Untuk menambahkan, mengubah, atau menghapus konteks tertentu, gunakan kombinasi --update-custom-contexts=KEY=VALUE,... dan --remove-custom-contexts=KEY,...

      Dengan:

      • KEY adalah kunci konteks yang ingin Anda lampirkan ke atau hapus dari objek. Contoh, Department.
      • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks yang ingin Anda lampirkan atau hapus dari objek. Contoh, Human resources.

Jika berhasil, responsnya akan terlihat seperti contoh berikut:

Patching gs://my-bucket/employees.txt#1560574162144861...
  Completed 1

Library klien

Java

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.


import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.BlobInfo.ObjectContexts;
import com.google.cloud.storage.BlobInfo.ObjectCustomContextPayload;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import com.google.common.collect.Maps;
import java.util.Map;

public class SetObjectContexts {
  public static void setObjectContexts(
      String projectId, String bucketName, String objectName, String key, String value)
      throws Exception {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The ID of your GCS object
    // String objectName = "your-object-name";

    // The context key-value you want to add
    // String key = "your-context-key";
    // String value = "your-context-value";

    try (Storage storage =
        StorageOptions.newBuilder().setProjectId(projectId).build().getService()) {
      BlobId blobId = BlobId.of(bucketName, objectName);
      Blob blob = storage.get(blobId);
      if (blob == null) {
        System.out.println("The object " + objectName + " was not found in " + bucketName);
        return;
      }

      // Recommended: Set a generation-match precondition to avoid potential race
      // conditions and data corruptions. The request to update returns a 412 error if
      // the object's generation number does not match your precondition.
      Storage.BlobTargetOption precondition = Storage.BlobTargetOption.generationMatch();

      // This section demonstrates how to upsert, delete all, and delete a specific context.

      // To upsert a context (if the key already exists, its value is replaced;
      // otherwise, a new key-value pair is added):
      ObjectCustomContextPayload payload =
          ObjectCustomContextPayload.newBuilder().setValue(value).build();
      Map<String, ObjectCustomContextPayload> custom = Maps.newHashMap();
      custom.put(key, payload);
      ObjectContexts contexts = ObjectContexts.newBuilder().setCustom(custom).build();

      /*
       * To delete all existing contexts:
       * ObjectContexts contexts = ObjectContexts.newBuilder().setCustom(null).build();
       */

      /*
       * To delete a specific key from the context:
       * Map<String, ObjectCustomContextPayload> custom = Maps.newHashMap();
       * custom.put(key, null);
       * ObjectContexts contexts = ObjectContexts.newBuilder().setCustom(custom).build();
       */
      BlobInfo pendingUpdate = blob.toBuilder().setContexts(contexts).build();
      storage.update(pendingUpdate, precondition);

      System.out.println(
          "Updated custom contexts for object " + objectName + " in bucket " + bucketName);
    }
  }
}

Rust

use google_cloud_storage::client::StorageControl;
use google_cloud_storage::model::ObjectContexts;
use google_cloud_wkt::FieldMask;

pub async fn sample(client: &StorageControl, bucket_id: &str) -> anyhow::Result<()> {
    const NAME: &str = "object-with-contexts";
    let object = client
        .get_object()
        .set_bucket(format!("projects/_/buckets/{bucket_id}"))
        .set_object(NAME)
        .send()
        .await?;

    let metageneration = object.metageneration;
    let mut custom = object.contexts.clone().unwrap_or_default().custom;
    custom.entry("example".to_string()).or_default().value = "true".into();

    let updated = client
        .update_object()
        .set_if_metageneration_match(metageneration)
        .set_object(object.set_contexts(ObjectContexts::new().set_custom(custom)))
        .set_update_mask(FieldMask::default().set_paths(["contexts.custom.example"]))
        .send()
        .await?;
    println!(
        "successfully set contexts for object {NAME} in bucket {bucket_id}: {:?}",
        updated.contexts
    );
    Ok(())
}

JSON API

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi setelan untuk objek, yang harus menyertakan kolom konfigurasi contexts untuk objek.

    Untuk menambahkan, mengubah, atau menimpa konteks yang ada, gunakan format berikut:

      {
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            },
            ...
          }
        }
      }

    Dengan:

    • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci dalam objek custom.
    • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

    Untuk menghapus semua konteks yang ada, gunakan format berikut:

      {
        "contexts": {
          "custom": null
        }
      }

    Untuk menghapus kunci tertentu dari konteks, gunakan format berikut:

      {
        "contexts": {
          "custom": {
            "KEY": null,
            ...
          }
        }
      }

    Dengan:

    KEY adalah kunci konteks yang ingin Anda hapus dari objek. Contoh, Department. Anda dapat menentukan beberapa kunci yang akan dihapus dari objek custom.

  3. Gunakan cURL untuk memanggil JSON API dengan permintaan PATCH Object:

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

    Dengan:

    • JSON_FILE_NAME adalah jalur ke file yang menyertakan informasi konteks objek.
    • BUCKET_NAME adalah nama bucket yang berisi objek yang konteksnya ingin Anda edit. Contoh, my-bucket.
    • OBJECT_NAME adalah nama objek yang dienkode ke URL. Contoh, employees.txt.

Atau, Anda dapat mengganti konteks objek dengan permintaan Objek PUT. Permintaan objek PUT juga mengganti metadata objek lainnya. Oleh karena itu, sebaiknya jangan gunakan permintaan objek PUT.

Melihat konteks objek

Anda dapat melihat konteks objek dengan mencantumkan metadata objek atau mendeskripsikan objek tertentu.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang berisi objek dengan konteks yang ingin Anda lihat.

  3. Buka objek, lalu klik nama objek.

    Di halaman Object details, key-value pair untuk konteks yang dilampirkan dicantumkan di bagian Object contexts.

Command line

Gunakan perintah gcloud storage objects describe.

gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME

Dengan:

  • BUCKET_NAME adalah nama bucket yang berisi objek. Contoh, my-bucket.
  • OBJECT_NAME adalah nama objek. Contoh, employees.txt.

Jika berhasil, responsnya akan terlihat mirip dengan contoh berikut ini:

bucket: my-bucket
contexts:
  custom:
    Department:
      createTime: '2023-01-01T00:00:00.000000+00:00'
      type: CUSTOM
      updateTime: '2023-01-01T00:00:00.000000+00:00'
      value: Human resources
    google:annotation:face-detector-v1:
      createTime: '2025-09-29T17:20:00.000000+00:00'
      extendedDataTypeUrl: type.googleapis.com/google.protobuf.Struct
      type: CUSTOM
      updateTime: '2025-09-29T17:20:00.000000+00:00'
      value: SUCCESS
name: employees.txt

Library klien

Java

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.


import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobInfo.ObjectContexts;
import com.google.cloud.storage.BlobInfo.ObjectCustomContextPayload;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.util.Map;

public class GetObjectContexts {
  public static void getObjectContexts(String projectId, String bucketName, String objectName)
      throws Exception {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The ID of your GCS object
    // String objectName = "your-object-name";

    try (Storage storage =
        StorageOptions.newBuilder().setProjectId(projectId).build().getService()) {

      Blob blob = storage.get(bucketName, objectName);
      if (blob == null) {
        System.out.println("The object " + objectName + " was not found in " + bucketName);
        return;
      }
      ObjectContexts objectContexts = blob.getContexts();

      if (objectContexts != null) {
        Map<String, ObjectCustomContextPayload> customContexts = objectContexts.getCustom();
        if (customContexts == null) {
          System.out.println("No custom contexts found for object: " + objectName);
          return;
        }
        // Print blob's object contexts
        System.out.println("\nCustom Contexts:");
        for (Map.Entry<String, ObjectCustomContextPayload> custom : customContexts.entrySet()) {
          System.out.println(custom.getKey() + "=" + custom.getValue());
        }
      }
    }
  }
}

Rust

use google_cloud_storage::client::StorageControl;

pub async fn sample(client: &StorageControl, bucket_id: &str) -> anyhow::Result<()> {
    const NAME: &str = "object-with-contexts";
    let object = client
        .get_object()
        .set_bucket(format!("projects/_/buckets/{bucket_id}"))
        .set_object(NAME)
        .send()
        .await?;
    println!(
        "The contexts field for object {NAME} in bucket {bucket_id} is: {:?}",
        object.contexts
    );
    Ok(())
}

JSON API

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Gunakan cURL untuk memanggil JSON API dengan permintaan GET Object:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

    Dengan:

    • BUCKET_NAME adalah nama bucket yang berisi objek. Contoh, my-bucket.
    • OBJECT_NAME adalah nama objek yang dienkode ke URL. Contoh, employees.txt.

    Jika berhasil, responsnya akan terlihat mirip dengan contoh berikut ini:

      {
        "kind": "storage#object",
        "name": "employees.txt",
        "bucket": "my-bucket",
        "contexts": {
          "custom": {
            "Department": {
              "value": "Human resources",
              "createTime": "2023-01-01T00:00:00.000Z",
              "updateTime": "2023-01-01T00:00:00.000Z"
            },
            "google:annotation:face-detector-v1": {
              "value": "SUCCESS",
              "createTime": "2025-09-29T17:20:00.000Z",
              "updateTime": "2025-09-29T17:20:00.000Z",
              "extendedDataTypeUrl": "type.googleapis.com/google.protobuf.Struct"
            }
          }
        }
      }
      

Melihat konteks objek lengkap

Untuk melihat satu konteks dan data yang diperluas, gunakan metode viewFullContext (Pratinjau).

JSON API

Untuk mengambil satu konteks lengkap (termasuk data yang diperluas) berdasarkan kunci:

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Gunakan cURL untuk memanggil JSON API dengan permintaan GET Lihat Konteks Lengkap:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/viewFullContext?contextKey=KEY"

    Dengan:

    • BUCKET_NAME adalah nama bucket tempat objek berada. Contoh, my-bucket.
    • OBJECT_NAME adalah nama objek yang dienkode ke URL. Contoh, employees.txt.
    • KEY adalah kunci konteks spesifik yang akan diambil. Contoh, google:annotation:face-detector-v1.

    Jika berhasil, responsnya akan terlihat mirip dengan contoh berikut ini:

    {
      "kind": "storage#objectFullContext",
      "type": "CUSTOM",
      "key": "google:annotation:face-detector-v1",
      "value": "SUCCESS",
      "createTime": "2025-09-29T17:20:00.000Z",
      "updateTime": "2025-09-29T17:20:00.000Z",
      "extendedData": {
        "@type": "type.googleapis.com/google.protobuf.Struct",
        "value": {
          "modelName": "face-detector",
          "modelVersion": "v1",
          "faceAnnotationGroup": {
            "faceAnnotations": [
              {
                "detectionConfidence": 0.9,
                "landmarkingConfidence": 0.8
              }
            ]
          }
        }
      }
    }

Memfilter objek menurut konteks

Memfilter objek berdasarkan keberadaan kunci konteks objek atau nilai spesifiknya. Memfilter objek berdasarkan konteks membantu menemukan dan mengelola grup objek tertentu secara efisien. Untuk mengetahui detailnya, lihat Memfilter objek menurut konteks.

Mengelola konteks objek selama operasi objek

Secara default, Cloud Storage mempertahankan konteks objek saat Anda menyalin, menulis ulang, menggabungkan, memindahkan, atau memulihkan objek.

Menyalin objek

Secara default, Cloud Storage mempertahankan konteks objek dari objek sumber selama operasi penyalinan, meskipun Anda mengganti metadata lainnya. Untuk mengubah konteks objek selama operasi penyalinan, selesaikan langkah-langkah berikut:

Command line

Perintah gcloud storage cp, perintah gcloud storage rsync, dan perintah gcloud storage mv mempertahankan konteks dari objek sumber secara default. Untuk mengubah konteks selama operasi ini, gunakan salah satu tanda berikut:

  • Flag --custom-contexts untuk menetapkan konteks baru bagi objek tujuan.

  • Flag --clear-custom-contexts untuk mencegah konteks dari objek sumber dilampirkan ke objek tujuan.

  • Kombinasi flag --update-custom-contexts dan --remove-custom-contexts untuk mengubah setiap konteks dari objek sumber sebelum melampirkannya ke objek tujuan.

Untuk menetapkan konteks baru saat Anda menyalin objek, gunakan perintah gcloud storage cp:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --custom-contexts=KEY=VALUE,...

Dengan:

  • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan disalin. Contoh, my-source-bucket.
  • SOURCE_OBJECT_NAME adalah nama objek yang akan disalin. Contoh, employees.txt.
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan disalin. Contoh, my-destination-bucket.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan. Contoh, employees-backup.txt.
  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci yang dipisahkan dengan koma.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

Untuk menghapus semua konteks dari objek sumber saat Anda menyalin objek, gunakan perintah gcloud storage cp:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --clear-custom-contexts

Dengan:

  • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan disalin. Contoh, my-source-bucket.
  • SOURCE_OBJECT_NAME adalah nama objek yang akan disalin. Contoh, pets/dog.png.
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan disalin. Contoh, my-destination-bucket.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan. Contoh, pets/cat.png.

Untuk mengubah konteks tertentu dari objek sumber saat Anda menyalin objek, gunakan perintah gcloud storage cp dengan --update-custom-contexts dan --remove-custom-contexts:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --update-custom-contexts=KEY=VALUE,... --remove-custom-contexts=KEY,...

Dengan:

  • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan disalin. Contoh, my-source-bucket.
  • SOURCE_OBJECT_NAME adalah nama objek yang akan disalin. Contoh, pets/dog.png.
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan disalin. Contoh, my-destination-bucket.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan. Contoh, pets/cat.png.
  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci atau kunci yang dipisahkan dengan koma.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

JSON API

Untuk mengganti konteks saat menyalin objek, sertakan properti contexts.custom dalam isi permintaan:

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi konteks untuk dilampirkan ke objek tujuan:

      {
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            }
          }
        }
      }

    Dengan:

    • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department.
    • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.
  3. Gunakan cURL untuk memanggil JSON API dengan permintaan Objek POST:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/copyTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME"

    Dengan:

    • JSON_FILE_NAME adalah jalur ke file JSON yang menyertakan informasi konteks objek.
    • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan disalin. Contoh, my-source-bucket.
    • SOURCE_OBJECT_NAME adalah nama objek yang dienkode ke URL yang akan disalin. Contoh, employees.txt.
    • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan disalin. Contoh, my-destination-bucket.
    • DESTINATION_OBJECT_NAME adalah nama objek tujuan yang dienkode ke URL. Contoh, employees-backup.txt.

Untuk menghapus konteks sumber selama operasi penyalinan, gunakan parameter kueri dropContextGroups=custom dalam permintaan Anda:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/copyTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME?dropContextGroups=custom"

Jika isi permintaan berisi konteks dengan awalan google:, Anda dapat mempertahankan kunci dan nilai yang ada dari objek sumber, tetapi Cloud Storage akan menolak kunci google: baru atau nilai yang diubah.

Untuk mempertahankan konteks, hapus properti contexts dari isi permintaan dan kecualikan parameter kueri dropContextGroups.

Menulis ulang objek

Secara default, Cloud Storage mempertahankan konteks objek dari objek sumber selama operasi penulisan ulang, meskipun Anda mengganti metadata lainnya. Untuk mengubah konteks objek selama operasi penulisan ulang, selesaikan langkah-langkah berikut:

Command line

Perintah gcloud storage cp, perintah gcloud storage rsync, dan perintah gcloud storage mv melakukan penulisan ulang secara otomatis jika diperlukan, misalnya, saat menyalin objek di antara lokasi atau kelas penyimpanan yang berbeda. gcloud storage cp dan gcloud storage rsync menghasilkan objek sumber dan tujuan, sedangkan gcloud storage mv membuat objek tujuan dan menghapus objek sumber. Karena operasi ini membuat objek baru, Anda juga dapat mengubah atau melampirkan konteks sebagai bagian dari perintah yang sama menggunakan salah satu flag berikut:

  • Flag --custom-contexts untuk menetapkan konteks baru bagi objek tujuan.

  • Flag --clear-custom-contexts untuk mencegah konteks dari objek sumber dilampirkan ke objek tujuan.

  • Kombinasi flag --update-custom-contexts dan --remove-custom-contexts untuk mengubah konteks individual dari objek sumber sebelum melampirkannya ke objek tujuan.

Untuk menetapkan konteks baru saat Anda menyalin objek, gunakan perintah gcloud storage cp:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --custom-contexts=KEY=VALUE,...

Dengan:

  • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan disalin. Contoh, my-source-bucket.
  • SOURCE_OBJECT_NAME adalah nama objek yang akan disalin. Contoh, employees.txt.
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan disalin. Contoh, my-destination-bucket.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan. Contoh, employees-backup.txt.
  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci yang dipisahkan dengan koma.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

Untuk menghapus semua konteks dari objek sumber saat Anda menyalin objek, gunakan perintah gcloud storage cp:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --clear-custom-contexts

Dengan:

  • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan disalin. Contoh, my-source-bucket.
  • SOURCE_OBJECT_NAME adalah nama objek yang akan disalin. Contoh, pets/dog.png.
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan disalin. Contoh, my-destination-bucket.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan. Contoh, pets/cat.png.

Untuk mengubah konteks tertentu dari objek sumber saat Anda menyalin objek, gunakan perintah gcloud storage cp dengan --update-custom-contexts dan --remove-custom-contexts:

gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME --update-custom-contexts=KEY=VALUE,... --remove-custom-contexts=KEY,...

Dengan:

  • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan disalin. Contoh, my-source-bucket.
  • SOURCE_OBJECT_NAME adalah nama objek yang akan disalin. Contoh, pets/dog.png.
  • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan disalin. Contoh, my-destination-bucket.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan. Contoh, pets/cat.png.
  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci atau kunci yang dipisahkan dengan koma.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.

JSON API

Untuk mengganti konteks saat menulis ulang objek, sertakan properti contexts.custom dalam isi permintaan:

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi konteks yang akan dilampirkan ke objek tujuan:

      {
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            }
          }
        }
      }

    Dengan:

    • KEY adalah kunci konteks yang akan dilampirkan ke objek. Misalnya, Department.
    • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Misalnya, Human resources.
  3. Gunakan cURL untuk memanggil JSON API dengan permintaan POST rewrite Object:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME"

    Dengan:

    • JSON_FILE_NAME adalah jalur ke file JSON yang mencakup informasi konteks objek.
    • SOURCE_BUCKET_NAME adalah nama bucket yang berisi objek yang akan ditulis ulang. Contoh, my-source-bucket.
    • SOURCE_OBJECT_NAME adalah nama objek yang dienkode ke URL yang akan ditulis ulang. Contoh, employees.txt.
    • DESTINATION_BUCKET_NAME adalah nama bucket tempat objek akan ditulis ulang. Contoh, my-destination-bucket.
    • DESTINATION_OBJECT_NAME adalah nama objek tujuan yang dienkode ke URL. Contoh, employees-backup.txt.

Untuk menghapus konteks sumber selama operasi penulisan ulang, gunakan parameter kueri dropContextGroups=custom dalam permintaan Anda:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/DESTINATION_OBJECT_NAME?dropContextGroups=custom"

Jika isi permintaan berisi konteks dengan awalan google:, Anda dapat mempertahankan kunci dan nilai yang ada dari objek sumber, tetapi Cloud Storage akan menolak kunci google: baru atau nilai yang diubah.

Untuk mempertahankan konteks, hapus properti contexts dari isi permintaan dan kecualikan parameter kueri dropContextGroups.

Menyusun objek

Perintah gcloud storage objects compose dan metode JSON API compose menggabungkan konteks dari objek sumber dan melampirkannya ke objek tujuan secara default. Cloud Storage menyelesaikan konflik dengan memprioritaskan konteks dari objek sumber yang diproses nanti. Untuk mengetahui informasi selengkapnya tentang perilaku konteks objek selama operasi compose, lihat Konteks objek gabungan.

Command line

Untuk menentukan konteks baru bagi objek tujuan saat menyusun objek, gunakan flag --contexts:

gcloud storage objects compose gs://BUCKET_NAME/SOURCE_OBJECT_1 gs://BUCKET_NAME/SOURCE_OBJECT_2 gs://BUCKET_NAME/DESTINATION_OBJECT_NAME --contexts=KEY=VALUE,...

Dengan:

  • BUCKET_NAME adalah nama bucket yang berisi objek sumber dan tempat objek tujuan dibuat. Contoh, my-bucket.
  • SOURCE_OBJECT_1 dan SOURCE_OBJECT_2 adalah objek sumber yang akan disusun.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan yang akan dibuat. Contoh, my-composite-object.
  • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department. Anda dapat menentukan beberapa pasangan nilai kunci yang dipisahkan dengan koma.
  • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Misalnya, Human resources.

Untuk mencegah konteks sumber dilampirkan ke objek gabungan, gunakan flag --clear-custom-contexts:

gcloud storage objects compose gs://BUCKET_NAME/SOURCE_OBJECT_1 gs://BUCKET_NAME/SOURCE_OBJECT_2 gs://BUCKET_NAME/DESTINATION_OBJECT_NAME --clear-custom-contexts

Dengan:

  • BUCKET_NAME adalah nama bucket yang berisi objek sumber dan tempat objek tujuan dibuat. Contoh, my-bucket.
  • SOURCE_OBJECT_1 dan SOURCE_OBJECT_2 adalah objek sumber yang akan disusun.
  • DESTINATION_OBJECT_NAME adalah nama objek tujuan yang akan dibuat. Contoh, my-composite-object.

JSON API

Untuk menentukan konteks baru untuk objek tujuan saat menyusun objek, sertakan konteks dalam properti destination isi permintaan.

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi isi permintaan:

    {
      "sourceObjects": [
        {"name": "SOURCE_OBJECT_1"},
        {"name": "SOURCE_OBJECT_2"}
      ],
      "destination": {
        "contentType": "text/plain",
        "contexts": {
          "custom": {
            "KEY": {
              "value": "VALUE"
            }
          }
        }
      }
    }

    Dengan:

    • SOURCE_OBJECT_1 dan SOURCE_OBJECT_2 adalah objek sumber yang akan disusun.
    • KEY adalah kunci konteks yang akan dilampirkan ke objek. Contoh, Department.
    • VALUE adalah nilai yang akan dikaitkan dengan kunci konteks. Contoh, Human resources.
  3. Gunakan cURL untuk memanggil JSON API dengan permintaan POST compose Object:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/DESTINATION_OBJECT_NAME/compose"

    Dengan:

    • JSON_FILE_NAME adalah jalur ke file JSON yang menyertakan isi permintaan.
    • BUCKET_NAME adalah nama bucket yang berisi objek sumber dan tempat objek tujuan dibuat. Contoh, my-bucket.
    • DESTINATION_OBJECT_NAME adalah nama objek tujuan yang akan dibuat. Contoh, my-composite-object.

Untuk mencegah konteks sumber dilampirkan ke objek gabungan, gunakan parameter kueri dropContextGroups=custom dalam permintaan Anda:

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi isi permintaan:

    {
      "sourceObjects": [
        {"name": "SOURCE_OBJECT_1"},
        {"name": "SOURCE_OBJECT_2"}
      ],
      "destination": {
        "contentType": "text/plain"
    }
    }

    Dengan:

    • SOURCE_OBJECT_1 dan SOURCE_OBJECT_2 adalah objek sumber yang akan disusun.
  3. Gunakan cURL untuk memanggil JSON API dengan permintaan POST compose Object:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/DESTINATION_OBJECT_NAME/compose?dropContextGroups=custom"

    Dengan:

    • JSON_FILE_NAME adalah jalur ke file JSON yang menyertakan isi permintaan.
    • BUCKET_NAME adalah nama bucket yang berisi objek sumber dan tempat objek tujuan dibuat. Contoh, my-bucket.
    • DESTINATION_OBJECT_NAME adalah nama objek tujuan yang akan dibuat. Contoh, my-composite-object.

Mengelola konteks objek secara massal

Untuk mengelola konteks objek bagi jutaan atau miliaran objek dengan satu tugas, gunakan Operasi batch penyimpanan. Untuk membuat tugas, tentukan objek target dengan menyediakan file manifes atau menggunakan awalan objek. Setelah menentukan objek, buat tugas operasi batch untuk memperbarui konteks objek.

Menganalisis konteks objek di BigQuery

Jika memiliki langganan Storage Intelligence yang aktif, Anda dapat membuat kueri dan menganalisis konteks objek di BigQuery. Gunakan tampilan Katalog Konteks Objek (object_contexts_catalog_view) untuk membuat kueri kunci konteks, nilai, dan payload extendedData terstruktur (seperti label gambar, wajah yang terdeteksi, dan kotak pembatas). Tampilan katalog diperbarui setiap 24 jam.

Misalnya, untuk menemukan semua objek yang skor anotasi tertentunya melebihi nilai minimum:

SELECT
  t.project,
  t.bucket,
  t.name,
  t.generation,
  label
FROM
  `PROJECT_ID.INSIGHTS_DATASET.object_contexts_catalog_view` AS t,
  UNNEST(t.contexts) AS context,
  UNNEST(JSON_QUERY_ARRAY(context.extendedData.labelAnnotationGroup.labelAnnotations)) AS label
WHERE
  context.key = "google:annotation:label-detector-v1"
  AND FLOAT64(label.score) > 0.75;

Ganti:

  • PROJECT_ID: ID project yang berisi set data Insight Penyimpanan.
  • INSIGHTS_DATASET: nama set data Insight Penyimpanan.

Untuk mengetahui informasi selengkapnya tentang skema tampilan katalog, lihat Skema katalog konteks objek. Untuk contoh kueri lainnya, lihat Menganalisis konteks objek.

Langkah berikutnya