Halaman ini memberikan ringkasan replikasi lintas bucket dan petunjuk tentang cara menggunakan fitur ini.
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 dari replikasi default dan replikasi turbo karena data Anda ada di dua bucket, yang masing-masing memiliki konfigurasinya sendiri seperti lokasi penyimpanan, enkripsi, akses, dan kelas penyimpanan. Oleh karena itu, layanan ini menawarkan pemulihan dan ketersediaan data, tetapi juga cocok untuk:
- Kedaulatan data: Pertahankan 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.
- Bagikan data: Mereplikasi data ke bucket yang dimiliki oleh vendor atau partner.
- Penggabungan Data: Gabungkan data dari berbagai bucket ke dalam satu bucket untuk menjalankan beban kerja analisis.
- Mengelola biaya, keamanan, dan kepatuhan: Pertahankan data Anda di bawah 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 antar-bucket dapat diaktifkan pada bucket baru yang Anda buat dan pada bucket yang sudah ada. Sebagian besar objek dapat direplikasi dalam urutan menit, sementara 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 Anda memulai, selesaikan langkah-langkah berikut.
Aktifkan Storage Transfer Service API
Jika Anda belum melakukannya, aktifkan Storage Transfer Service API.
Mendapatkan peran yang diperlukan
Untuk mendapatkan izin yang
diperlukan untuk menggunakan replikasi lintas bucket,
minta administrator Anda 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 mendapatkan petunjuk tentang cara memberikan peran pada bucket, lihat Menggunakan IAM dengan bucket. Untuk mengetahui petunjuk tentang 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 ServicegoogleServiceAccounts.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 Anda dan menyiapkan notifikasi Pub/Sub untuk bucket sumber Anda:
Izin yang diperlukan
Izin berikut harus diberikan di 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 bawaan 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
pada topik Pub/Subpubsub.subscriptions.consume
pada topik Pub/Subpubsub.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.
Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header
Authorization
.Buat file JSON yang berisi objek
TransferJob
dengan resourceReplicationSpec
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 ke tugas replikasi. Lihat dokumentasi referensitransferJobs
untuk persyaratan penamaan.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 tentang cara objek yang ada di bucket tujuan dapat ditimpa sebagai hasil tugas replikasi, yang dapat terjadi saat objek tujuan dan objek sumber memiliki nama yang sama. Nilainya harus berupa salah satu dari berikut:ALWAYS
: Selalu menimpa objek di bucket tujuanDIFFERENT
: Hanya mengganti objek di bucket tujuan jika data objek tujuan berbeda dengan data objek sumberNEVER
: Jangan pernah menimpa objek di bucket tujuan
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:
JSON_FILE_NAME
adalah nama file JSON yang Anda buat di Langkah 2.
Untuk memeriksa status tugas replikasi, lihat log Cloud Logging untuk Storage Transfer Service.
Mencantumkan tugas replikasi
Konsol
Untuk Google Cloud petunjuk konsol 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
Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header
Authorization
.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 mengetahui 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:
JOB_NAME
dengan ID unik tugas replikasi. Contoh,1234567890
. Untuk menemukan ID tugas transfer Anda, cantumkan tugas replikasi Anda.
REST API
JSON API
Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header
Authorization
.Gunakan
cURL
untuk memanggil Storage Transfer Service REST API dengan permintaantransferJobs.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 Anda.
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 (apakah 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 mengetahui daftar kemungkinan tanda, lihat dokumentasi gcloud alpha transfer jobs update
.
Misalnya, untuk memperbarui perilaku penimpaan 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 Anda, cantumkan atau lihat tugas transfer Anda.OVERWRITE_OPTION
dengan opsi tentang cara objek yang ada di bucket tujuan dapat ditimpa sebagai hasil dari tugas replikasi, yang dapat terjadi saat objek tujuan dan objek sumber memiliki nama yang sama. Nilainya harus berupa salah satu dari berikut:always
: Selalu menimpa 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
Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header
Authorization
.Buat file JSON yang berisi struktur berikut yang mencakup kolom objek
TransferJob
yang ingin Anda perbarui:{ "projectId": string, "transferJob": { object (TransferJob) }, "updateTransferJobFieldMask": UPDATE_MASK }
Dengan:
object (TransferJob)
diganti dengan kolom tugas replikasi yang ingin Anda perbarui. Lihat representasi resourceTransferJob
untuk mengetahui informasi selengkapnya.UPDATE_MASK
adalah daftar nama kolom yang ingin Anda perbarui, yang dipisahkan koma. Nilai dapat berupa satu atau beberapa nilai berikut:description
,transferSpec
,notificationConfig
,loggingConfig
,status
.
Untuk mengetahui informasi selengkapnya tentang nama kolom yang dapat Anda sertakan, lihat isi permintaan
transferJobs.patch
.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 Anda.
Menghapus tugas replikasi
Konsol
Untuk mengetahui petunjuk konsol Google Cloud tentang cara menghapus tugas replikasi, lihat Menghapus tugas replikasi menggunakan konsol Google Cloud .
Command line
Gunakan perintah gcloud alpha transfer jobs delete
:
gcloud alpha transfer jobs delete JOB_NAME
Ganti:
JOB_NAME
dengan ID unik tugas replikasi. Contoh,1234567890
. Untuk menemukan ID tugas replikasi Anda, cantumkan tugas replikasi Anda.
REST API
JSON API
Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header
Authorization
.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 Anda.