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.

Batasan

  • Replikasi lintas bucket tidak didukung untuk bucket namespace hierarkis.

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 sumber.

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 di project, lihat Mengelola akses ke project.

Memberikan peran yang diperlukan

Replikasi lintas bucket menggunakan Storage Transfer Service untuk mereplikasi objek dari bucket sumber ke bucket tujuan, dan Pub/Sub untuk menerima notifikasi perubahan pada bucket sumber.

Agar replikasi lintas bucket dapat menggunakan layanan ini, Anda harus memberikan izin yang diperlukan ke akun layanan yang digunakan oleh Storage Transfer Service untuk mereplikasi data, serta agen layanan yang digunakan oleh Pub/Sub untuk menulis notifikasi.

Memberikan peran yang diperlukan untuk Storage Transfer Service

Izin yang diperlukan untuk mereplikasi data menggunakan Storage Transfer Service dapat diberikan ke salah satu dari dua akun layanan:

  • Agen layanan Storage Transfer Service, yang dibuat dan dikelola secara otomatis oleh Google. Alamat email agen layanan ini mengikuti format penamaan project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Anda bisa mendapatkan alamat email agen layanan Storage Transfer Service dengan menggunakan Storage Transfer Service googleServiceAccounts.get API.

  • Akun layanan yang dikelola pengguna. Alamat email akun layanan ini mengikuti format penamaan SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com. Anda dapat membuat akun layanan Anda sendiri dan memberikan izin yang diperlukan untuk mereplikasi data.

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

Izin yang diperlukan

Izin berikut harus diberikan pada project sumber:

  • pubsub.topics.create
  • pubsub.subscriptions.create
  • pubsub.subscriptions.consume
  • iam.serviceAccounts.actAs jika Anda menggunakan akun layanan yang dikelola pengguna. Tidak diperlukan untuk agen layanan Storage Transfer Service.

Izin berikut harus diberikan di bucket sumber:

  • storage.buckets.get
  • storage.buckets.update
  • storage.objects.get

Izin berikut harus diberikan di bucket tujuan:

  • storage.buckets.get
  • storage.objects.create
  • storage.objects.get

Izin ini dapat diberikan melalui peran khusus atau dengan memberikan semua peran standar berikut:

  • Peran Pub/Sub Editor (roles/pubsub.editor) di project sumber
  • Peran Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner) dan Storage Object Viewer (roles/storage.objectViewer) di bucket sumber
  • Peran Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) dan Storage Object Viewer (roles/storage.objectViewer) di bucket tujuan
  • Service Account Token Creator (roles/iam.serviceAccountTokenCreator) di project sumber, jika Anda menggunakan akun layanan yang dikelola pengguna. Tidak diperlukan untuk agen layanan Storage Transfer Service.

Memberikan peran yang diperlukan untuk Pub/Sub

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.iam.gserviceaccount.com.

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 Google Cloud petunjuk konsol tentang cara membuat tugas replikasi, lihat Membuat tugas replikasi menggunakan Google Cloud konsol.

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 Google Cloud petunjuk konsol tentang cara mencantumkan tugas replikasi, lihat Mencantumkan tugas replikasi menggunakan Google Cloud konsol.

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 Google Cloud petunjuk konsol tentang cara melihat tugas replikasi, lihat Melihat tugas replikasi menggunakan Google Cloud konsol.

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 Google Cloud petunjuk konsol tentang cara memperbarui tugas replikasi, lihat Memperbarui tugas replikasi menggunakan Google Cloud konsol.

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 yang dipisahkan koma dari nama kolom 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 Google Cloud petunjuk konsol tentang cara menghapus tugas replikasi, lihat Menghapus tugas replikasi menggunakan Google Cloud konsol.

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.