Menggunakan replikasi lintas bucket

Halaman ini memberikan ringkasan replikasi lintas bucket dan petunjuk cara menggunakan fitur tersebut.

Ringkasan replikasi lintas bucket

Dalam beberapa kasus, Anda mungkin ingin menyalin data dari satu bucket Cloud Storage ke bucket lainnya. Replikasi lintas bucket menyalin objek baru dan yang diperbarui secara asinkron dari bucket sumber ke bucket tujuan.

Replikasi lintas bucket berbeda dengan replikasi default dan replikasi turbo karena data Anda ada di dua bucket, masing-masing dengan konfigurasinya sendiri seperti lokasi penyimpanan, enkripsi, akses, dan class penyimpanan. Oleh karena itu, layanan ini menawarkan pemulihan dan ketersediaan data, tetapi juga cocok untuk:

  • Kedaulatan data: Mengelola data di seluruh wilayah yang berjauhan secara geografis.
  • Memelihara versi pengembangan dan produksi yang terpisah: Buat bucket dan namespace yang berbeda, sehingga pengembangan tidak memengaruhi beban kerja produksi Anda.
  • Membagikan data: Mereplikasi data ke bucket yang dimiliki oleh vendor atau partner.
  • Agregasi Data: Menggabungkan data dari berbagai bucket ke dalam satu bucket untuk menjalankan beban kerja analisis.
  • Mengelola biaya, keamanan, dan kepatuhan: Mengelola data Anda berdasarkan kepemilikan, kelas penyimpanan, dan periode retensi yang berbeda.

Replikasi lintas bucket menggunakan Storage Transfer Service untuk mereplikasi objek dan Pub/Sub untuk mendapatkan pemberitahuan tentang perubahan pada bucket sumber dan tujuan. Replikasi lintas bucket dapat diaktifkan di bucket baru yang Anda buat dan di bucket yang ada. Sebagian besar objek dapat direplikasi dalam hitungan menit, sedangkan objek yang lebih besar dari satu GiB dapat memerlukan waktu beberapa jam.

Sebelum memulai

Sebelum memulai, selesaikan langkah-langkah berikut.

Mengaktifkan Storage Transfer Service API

Jika Anda belum melakukannya, aktifkan Storage Transfer Service API.

Mendapatkan peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna menggunakan replikasi lintas bucket, minta administrator untuk memberi Anda peran IAM Storage Transfer User (roles/storagetransfer.user) di bucket atau project.

Peran bawaan ini berisi izin yang diperlukan untuk menggunakan replikasi lintas bucket. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menggunakan replikasi lintas bucket:

  • storagetransfer.jobs.create
  • storagetransfer.jobs.delete
  • storagetransfer.jobs.get
  • storagetransfer.jobs.list
  • storagetransfer.jobs.run
  • storagetransfer.jobs.update

Untuk petunjuk cara memberikan peran pada bucket, lihat Menggunakan IAM dengan bucket. Untuk mengetahui petunjuk cara memberikan peran pada project, lihat Mengelola akses ke project.

Memberikan peran yang diperlukan

Replikasi lintas bucket menggunakan Pub/Sub untuk menerima notifikasi perubahan pada bucket sumber dan Storage Transfer Service untuk mereplikasi objek dari bucket sumber ke bucket tujuan. Untuk menggunakan replikasi lintas bucket, Anda juga harus memberikan izin yang diperlukan ke agen layanan yang digunakan oleh Storage Transfer Service untuk mereplikasi data dan agen layanan yang digunakan oleh Pub/Sub untuk menulis notifikasi.

Memberikan peran yang diperlukan ke agen layanan Storage Transfer Service

Storage Transfer Service menggunakan agen layanan yang dikelola Google untuk mereplikasi data. Alamat email agen layanan ini mengikuti format penamaan project-PROJECT_NUMBER@storage-transfer-service.. Anda bisa mendapatkan alamat email agen layanan Storage Transfer Service dengan menggunakan Storage Transfer Service googleServiceAccounts.get API.

Agen layanan Storage Transfer Service memerlukan izin berikut untuk mereplikasi objek Anda dan menyiapkan notifikasi Pub/Sub untuk bucket sumber Anda:

Izin yang diperlukan

  • storage.buckets.get pada bucket sumber dan tujuan
  • storage.buckets.update pada bucket sumber
  • storage.objects.list pada bucket sumber
  • storage.objects.get pada bucket sumber
  • storage.objects.rewrite pada bucket tujuan
  • pubsub.topics.create pada project

Izin ini dapat diberikan melalui peran Pub/Sub Editor (roles/pubsub.editor) dan peran Storage Admin (roles/storage.admin). Untuk peran yang kurang permisif daripada peran Storage Admin, Anda juga dapat menggunakan peran khusus.

Memberikan peran yang diperlukan ke agen layanan Cloud Storage

Cloud Storage menggunakan agen layanan yang dikelola Google untuk mengelola notifikasi Pub/Sub. Alamat email agen layanan ini mengikuti format penamaan service-PROJECT_NUMBER@gs-project-accounts..

Agen layanan Cloud Storage memerlukan izin berikut untuk menyiapkan Pub/Sub dan memublikasikan pesan ke topik:

Izin yang diperlukan

  • pubsub.topics.publish di topik Pub/Sub
  • pubsub.subscriptions.consume di topik Pub/Sub
  • pubsub.subscriptions.create pada project

Izin ini dapat diberikan melalui peran Pub/Sub Publisher (roles/pubsub.publisher).

Membuat tugas replikasi

Konsol

Untuk petunjuk konsol Google Cloud tentang cara membuat tugas replikasi, baca Membuat tugas replikasi menggunakan konsol Google Cloud.

Command line

Saat menggunakan Google Cloud CLI, Anda dapat membuat tugas replikasi untuk bucket yang ada.

Untuk membuat tugas replikasi, gunakan perintah gcloud alpha transfer jobs create dengan flag --replication:

gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication

Ganti:

  • SOURCE_BUCKET_NAME dengan nama bucket sumber yang ingin Anda replikasi. Contoh, my-source-bucket.

  • DESTINATION_BUCKET_NAME dengan nama bucket tujuan. Contoh, my-destination-bucket.

REST API

JSON API

Saat menggunakan JSON API, Anda dapat membuat tugas replikasi untuk bucket yang ada.

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

  2. Buat file JSON yang berisi objek TransferJob dengan resource ReplicationSpec yang diinisialisasi:

    TransferJob {
     "name": "TRANSFER_JOB_NAME",
     ...
     ReplicationSpec: {
       "gcsDataSource": {
         "bucketName": "SOURCE_BUCKET_NAME"
       },
       "gcsDataSink" {
         "bucketName": "DESTINATION_BUCKET_NAME"
       },
       "objectConditions": {
       },
       "transferOptions": {
         "overwriteWhen": "OVERWRITE_OPTION"
       }
     }
     ...
    }

    Ganti:

    • TRANSFER_JOB_NAME dengan nama yang ingin Anda tetapkan untuk tugas replikasi. Lihat dokumentasi referensi transferJobs untuk mengetahui persyaratan pemberian nama.

    • SOURCE_BUCKET_NAME dengan nama bucket sumber yang berisi objek yang ingin Anda replikasi. Contoh, example-source-bucket.

    • DESTINATION_BUCKET_NAME dengan nama bucket tujuan tempat objek Anda akan direplikasi. Contoh, example-destination-bucket.

    • OVERWRITE_OPTION dengan opsi untuk cara objek yang ada di bucket tujuan dapat ditimpa sebagai hasil dari tugas replikasi, yang dapat terjadi jika objek tujuan dan objek sumber memiliki nama yang sama. Nilainya harus berupa salah satu dari berikut:

      • ALWAYS: Selalu timpa objek di bucket tujuan

      • DIFFERENT: Hanya menimpa objek di bucket tujuan jika data objek tujuan berbeda dengan data objek sumber

      • NEVER: Jangan pernah menimpa objek di bucket tujuan

  3. Gunakan cURL untuk memanggil Storage Transfer Service REST API dengan permintaan transferJobs.create:

    curl -X POST --data-binary @JSON_FILE_NAME \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

    Dengan keterangan:

    • JSON_FILE_NAME adalah nama file JSON yang Anda buat di Langkah 2.

Untuk memeriksa status tugas replikasi, lihat Cloud Logging untuk log Storage Transfer Service.

Mencantumkan tugas replikasi

Konsol

Untuk petunjuk konsol Google Cloud tentang cara mencantumkan tugas replikasi, lihat Mencantumkan tugas replikasi menggunakan konsol Google Cloud.

Command line

Gunakan perintah gcloud alpha transfer jobs list dengan flag --job-type:

gcloud alpha transfer jobs list --job-type=replication

REST API

JSON API

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

  2. Gunakan cURL untuk memanggil Storage Transfer Service REST API dengan permintaan transferJobs.list:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

Melihat tugas replikasi

Konsol

Untuk petunjuk konsol Google Cloud tentang cara melihat tugas replikasi, lihat Melihat tugas replikasi menggunakan konsol Google Cloud.

Command line

Gunakan perintah gcloud alpha transfer jobs describe:

gcloud alpha transfer jobs describe JOB_NAME

Ganti:

REST API

JSON API

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

  2. Gunakan cURL untuk memanggil Storage Transfer Service REST API dengan permintaan transferJobs.get:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Ganti:

    • JOB_NAME dengan ID unik tugas replikasi. Contoh, 1234567890. Untuk menemukan ID tugas replikasi, cantumkan tugas replikasi.

Memperbarui tugas replikasi

Anda dapat memperbarui kolom berikut dari tugas replikasi:

  • Deskripsi tugas replikasi

  • Konfigurasi untuk menjalankan tugas replikasi

  • Konfigurasi notifikasi yang dipublikasikan ke Pub/Sub

  • Perilaku logging untuk operasi tugas replikasi

  • Status tugas replikasi (baik diaktifkan, dinonaktifkan, atau dihapus)

Konsol

Untuk petunjuk konsol Google Cloud tentang cara memperbarui tugas replikasi, lihat Memperbarui tugas replikasi menggunakan konsol Google Cloud.

Command line

Gunakan perintah gcloud alpha transfer jobs update dengan flag yang mengontrol properti tugas replikasi yang ingin Anda perbarui. Untuk daftar kemungkinan flag, lihat dokumentasi gcloud alpha transfer jobs update.

Misalnya, untuk memperbarui perilaku penggantian objek tugas replikasi, jalankan perintah gcloud alpha transfer jobs update dengan flag --overwrite-when:

gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION

Ganti:

  • JOB_NAME dengan ID unik tugas replikasi. Contoh, 1234567890. Untuk menemukan ID tugas transfer, cantumkan atau lihat tugas transfer Anda.

  • OVERWRITE_OPTION dengan opsi untuk cara objek yang ada di bucket tujuan dapat ditimpa sebagai hasil dari tugas replikasi, yang dapat terjadi jika objek tujuan dan objek sumber memiliki nama yang sama. Nilainya harus berupa salah satu dari berikut:

    • always: Selalu timpa objek tujuan.

    • different: Hanya menimpa objek di bucket tujuan jika data objek tujuan berbeda dengan data objek sumber.

    • never: Jangan pernah menimpa objek tujuan.

REST API

JSON API

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

  2. Buat file JSON yang berisi struktur berikut yang menyertakan kolom objek TransferJob yang ingin diupdate:

    {
     "projectId": string,
     "transferJob": {
       object (TransferJob)
     },
       "updateTransferJobFieldMask": UPDATE_MASK
    }

    Dengan keterangan:

    • object (TransferJob) diganti dengan kolom tugas replikasi yang ingin Anda perbarui. Lihat representasi resource TransferJob untuk mengetahui informasi selengkapnya.

    • UPDATE_MASK adalah daftar nama kolom yang dipisahkan koma yang ingin Anda perbarui. Nilai dapat berupa satu atau beberapa hal berikut: description, transferSpec, notificationConfig, loggingConfig, status.

    Untuk mengetahui informasi selengkapnya tentang nama kolom yang dapat Anda sertakan, lihat isi permintaan transferJobs.patch.

  3. Gunakan cURL untuk memanggil Storage Transfer Service REST API dengan permintaan transferJobs.patch:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Ganti:

    • JOB_NAME dengan ID unik tugas replikasi. Contoh, 1234567890. Untuk menemukan ID tugas replikasi, cantumkan tugas replikasi.

Menghapus tugas replikasi

Konsol

Untuk petunjuk konsol Google Cloud tentang cara menghapus tugas replikasi, baca Menghapus tugas replikasi menggunakan konsol Google Cloud.

Command line

Gunakan perintah gcloud alpha transfer jobs delete:

gcloud alpha transfer jobs delete JOB_NAME

Ganti:

REST API

JSON API

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

  2. Gunakan cURL untuk memanggil Storage Transfer Service REST API dengan permintaan transferJobs.delete:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Ganti:

    • JOB_NAME dengan ID unik tugas replikasi. Contoh, 1234567890. Untuk menemukan ID tugas replikasi, cantumkan tugas replikasi.