Memindahkan bucket

Halaman ini menjelaskan proses pemindahan bucket dari satu lokasi ke lokasi lain. Untuk mengetahui informasi tentang pemindahan bucket, lihat Pemindahan bucket.

Sebelum memulai

Sebelum memulai proses pemindahan bucket, selesaikan langkah-langkah berikut:

  1. Aktifkan Management Hub.

  2. Aktifkan penghapusan sementara.

  3. Periksa kuota dan batas untuk memastikan bahwa lokasi baru memiliki kuota yang cukup untuk mengakomodasi data bucket.

  4. Menentukan jenis pemindahan bucket untuk memahami apakah downtime operasi tulis diperlukan.

  5. Hapus tag bucket yang ada.

  6. Jika Anda menggunakan laporan inventaris, simpan konfigurasi Anda.

Peran yang diperlukan

Untuk mendapatkan izin guna memindahkan bucket dari satu lokasi ke lokasi lain, minta administrator untuk memberi Anda peran Storage Admin (roles/storage.admin) untuk project tersebut.

Peran ini memberikan serangkaian izin yang memungkinkan Anda memindahkan bucket dari satu lokasi ke lokasi lainnya. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Pengguna yang diautentikasi harus memiliki izin IAM berikut di bucket untuk menggunakan metode ini:

  • storage.buckets.relocate
  • storage.bucketOperations.get
    Anda memerlukan izin ini untuk melihat status operasi pemindahan bucket.
  • storage.bucketOperations.list
    Anda memerlukan izin ini untuk melihat daftar operasi pemindahan bucket.
  • storage.bucketOperations.cancel
    Anda memerlukan izin ini untuk membatalkan operasi pemindahan bucket.

Pengguna terautentikasi mungkin juga memerlukan izin berikut di bucket untuk menggunakan metode ini:

  • storage.bucket.get
    Anda memerlukan izin ini untuk melihat metadata bucket selama uji coba dan salinan data inkremental dari operasi pemindahan bucket.
  • storage.objects.list dan storage.objects.get
    Anda memerlukan izin ini untuk melihat daftar objek di bucket yang ingin dipindahkan ke lokasi lain.

Anda juga bisa mendapatkan izin ini dengan peran khusus atau mungkin bisa mendapatkan izin ini dengan peran standar lainnya. Untuk melihat peran yang terkait dengan izin apa, lihat Peran IAM untuk Cloud Storage.

Untuk mengetahui petunjuk cara memberikan peran untuk project, lihat Mengelola akses ke project.

Memindahkan bucket

Bagian ini menjelaskan proses pemindahan bucket Cloud Storage dari satu lokasi ke lokasi lain dengan Pemindahan Bucket. Saat memindahkan bucket, Anda memulai proses penyalinan data inkremental, memantaunya, lalu memulai langkah sinkronisasi akhir. Untuk mengetahui informasi selengkapnya tentang langkah-langkah ini, lihat Memahami proses pemindahan bucket.

Melakukan uji coba

Untuk meminimalkan potensi masalah selama proses pemindahan bucket, sebaiknya Anda melakukan uji coba. Uji coba mensimulasikan proses pemindahan bucket tanpa memindahkan data, sehingga membantu Anda mendeteksi dan menyelesaikan masalah sejak awal. Uji coba memeriksa inkompatibilitas berikut:

Meskipun dry run tidak dapat mengidentifikasi setiap kemungkinan masalah karena beberapa masalah mungkin hanya muncul selama migrasi langsung karena faktor seperti ketersediaan resource real-time, dry run mengurangi risiko menghadapi masalah yang memakan waktu selama relokasi yang sebenarnya.

Command line

Simulasikan uji coba pemindahan bucket:

gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run

Dengan keterangan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

  • LOCATION adalah lokasi tujuan bucket.

Memulai dry run akan memulai operasi yang berjalan lama. Anda akan menerima ID operasi dan deskripsi operasi. Untuk melacak penyelesaian uji coba, Anda harus melacak progresnya. Untuk informasi tentang cara melacak progres uji coba, lihat Mendapatkan detail operasi yang berjalan lama.

Jika uji coba menunjukkan masalah, atasi masalah tersebut sebelum melanjutkan ke Memulai langkah penyalinan data inkremental.

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 setelan untuk bucket, yang harus menyertakan parameter destinationLocation dan validateOnly. Lihat dokumentasi Buckets: relocate untuk mengetahui daftar lengkap setelan. Berikut adalah setelan umum yang harus disertakan:

    {
      "destinationLocation": "DESTINATION_LOCATION",
      "destinationCustomPlacementConfig": {
          "dataLocations": [
            LOCATIONS,
            ...
            ]
        },
      "validateOnly": "true"
    }

    Dengan keterangan:

    • DESTINATION_LOCATION adalah lokasi tujuan bucket.
    • LOCATIONS adalah daftar kode lokasi yang akan digunakan untuk region ganda yang dapat dikonfigurasi.
    • validateOnly disetel ke true untuk melakukan uji coba.
  3. Gunakan cURL untuk memanggil JSON API:

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

    Dengan keterangan:

    • JSON_FILE_NAME adalah nama file JSON yang Anda buat.
    • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

Memulai penyalinan data tambahan

Command line

Mulai operasi pemindahan bucket:

gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION

Dengan keterangan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

  • LOCATION adalah lokasi tujuan bucket.

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 setelan untuk bucket. Lihat dokumentasi Buckets: relocate untuk mengetahui daftar lengkap setelan. Berikut adalah setelan umum yang harus disertakan:

    {
      "destinationLocation": "DESTINATION_LOCATION",
      "destinationCustomPlacementConfig": {
          "dataLocations": [
            LOCATIONS,
            ...
            ]
        },
      "validateOnly": "false"
    }

    Dengan keterangan:

    • DESTINATION_LOCATION adalah lokasi tujuan bucket.
    • LOCATIONS adalah daftar kode lokasi yang akan digunakan untuk region ganda yang dapat dikonfigurasi.
    • validateOnly ditetapkan ke false untuk memulai langkah penyalinan data inkremental dari pemindahan bucket.
  3. Gunakan cURL untuk memanggil JSON API:

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

    Dengan keterangan:

    • JSON_FILE_NAME adalah nama file JSON yang Anda buat.
    • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

Memantau penyalinan data inkremental

Proses pemindahan bucket adalah operasi yang berjalan lama yang harus dipantau untuk melihat progresnya. Anda dapat secara rutin memeriksa daftar operasi yang berjalan lama untuk melihat status langkah penyalinan data inkremental. Untuk informasi tentang cara mendapatkan detail tentang operasi yang berjalan lama, membuat daftar, atau membatalkan operasi yang berjalan lama, lihat Menggunakan operasi yang berjalan lama di Cloud Storage.

Contoh berikut menunjukkan output yang dihasilkan oleh operasi penyalinan data inkremental:

done: false
kind: storage#operation
metadata:
'@type': type.googleapis.com/google.storage.control.v2.RelocateBucketMetadata
commonMetadata:
  createTime: '2024-10-21T04:26:59.666Z
  endTime: '2024-12-29T23:39:53.340Z'
  progressPercent: 99
  requestedCancellation: false
  type: relocate-bucket
  updateTime: '2024-10-21T04:27:03.2892'
destinationLocation: US-CENTRAL1
finalizationState: 'READY'
progress:
  byteProgressPercent: 100
  discoveredBytes: 200
  remainingBytes: 0
  discoveredObjectCount: 10
  remainingObjectCount: 8
  objectProgressPercent: 100
  discoveredSyncCount: 8
  remainingSyncCount: 0
  syncProgressPercent: 100
relocationState: SYNCING
sourceLocation: US
validateOnly: false
writeDowntimeExpireTime: '2024-12-30T10:34:01.786Z'
name: projects//buckets/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w
response:
  '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketResponse
  selfLink: https://storage.googleusercontent.com/storage/v1_ds/b/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w

Tabel berikut memberikan informasi tentang kolom kunci dalam output yang dihasilkan oleh operasi penyalinan data inkremental:

Nama kolom Deskripsi Nilai yang memungkinkan
done Menunjukkan penyelesaian operasi pemindahan bucket. true, false
kind Menunjukkan bahwa resource ini mewakili operasi penyimpanan.
metadata Memberikan informasi tentang operasi.
metadata.@type Menunjukkan jenis operasi sebagai relokasi bucket.
metadata.commonMetadata Metadata yang umum untuk semua operasi.
metadata.commonMetadata.createTime Waktu operasi yang berjalan lama dibuat.
metadata.commonMetadata.endTime Waktu operasi yang berjalan lama berakhir.
metadata.commonMetadata.progressPercent Estimasi progres operasi yang berjalan lama, dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.commonMetadata.requestedCancellation Menunjukkan apakah pengguna telah meminta pembatalan operasi yang berjalan lama. true, false
metadata.commonMetadata.type Menunjukkan jenis operasi yang berjalan lama.
metadata.commonMetadata.updateTime Waktu operasi yang berjalan lama terakhir diperbarui.
metadata.destinationLocation Lokasi tujuan bucket.
metadata.finalizationState Menunjukkan kesiapan untuk memulai langkah sinkronisasi akhir.
  • READY: Menunjukkan bahwa Anda dapat memulai langkah sinkronisasi akhir. Namun, sebaiknya tunggu hingga nilai kolom progressPercent mencapai 99.
  • WAITING_ON_SYNC: Menunjukkan bahwa Anda tidak dapat memulai langkah sinkronisasi akhir.
  • NOT_REQUIRED: Menunjukkan bahwa langkah sinkronisasi akhir tidak diperlukan untuk bucket ini dan Anda dapat melewatinya.
  • BLOCKED_ON_ERRORS: Menunjukkan bahwa langkah finalisasi dijeda untuk sementara karena error. Anda harus mengatasi error untuk melanjutkan langkah ini.
  • RUNNING: Menunjukkan bahwa langkah finalisasi sedang berlangsung.
  • FINALIZED: Menunjukkan bahwa langkah finalisasi telah berhasil diselesaikan.
metadata.progress Detail progres operasi relokasi.
metadata.progress.byteProgressPercent Progres byte yang disalin dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.progress.discoveredBytes Jumlah byte yang ditemukan di bucket sumber.
metadata.progress.discoveredObjectCount Jumlah objek yang ditemukan di bucket sumber.
metadata.progress.discoveredSyncCount Jumlah pembaruan metadata objek yang ditemukan di bucket sumber.
metadata.progress.objectProgressPercent Progres objek yang disalin dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.progress.remainingBytes Jumlah byte yang tersisa untuk disalin dari bucket sumber ke bucket tujuan.
metadata.progress.remainingObjectCount Jumlah objek yang tersisa untuk disalin dari bucket sumber ke bucket tujuan.
metadata.progress.remainingSyncCount Jumlah pembaruan metadata objek yang tersisa untuk disinkronkan.
metadata.progress.syncProgressPercent Progres pembaruan metadata objek yang akan disinkronkan dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.relocationState Status keseluruhan relokasi bucket
  • SYNCING: Menunjukkan bahwa langkah penyalinan data inkremental secara aktif menyalin objek dari bucket sumber ke bucket tujuan.
  • FINALIZING: Menunjukkan bahwa langkah finalisasi telah dimulai.
  • FAILED: Menunjukkan bahwa langkah penyalinan data inkremental mengalami error dan tidak berhasil diselesaikan.
  • SUCCEEDED: Menunjukkan bahwa langkah salinan data inkremental telah berhasil diselesaikan.
  • CANCELLED: Menunjukkan bahwa langkah salinan data inkremental dibatalkan.
metadata.sourceLocation Lokasi sumber bucket.
metadata.validateOnly Menunjukkan apakah uji coba pemindahan bucket telah dimulai. true, false
metadata.writeDowntimeExpireTime Waktu habis masa berlaku periode nonaktif operasi tulis.
name ID unik untuk operasi pemindahan ini.
Format: projects/_/buckets/bucket-name/operations/operation-id
response Respons operasi.
response.@type Jenis respons.
selfLink Link ke operasi ini.

Anda mungkin mengalami masalah karena batasan saat berinteraksi dengan fitur Cloud Storage lainnya. Untuk mengetahui informasi selengkapnya tentang batasan, lihat Batasan.

Memulai langkah sinkronisasi akhir

Langkah sinkronisasi akhir melibatkan periode saat Anda tidak dapat melakukan operasi menulis pada bucket. Sebaiknya jadwalkan langkah sinkronisasi akhir pada waktu yang meminimalkan gangguan pada aplikasi Anda.

Sebelum melanjutkan, pastikan bucket sudah siap sepenuhnya dengan memeriksa nilai finalizationState dalam output langkah memantau proses penyalinan data inkremental. Nilai finalizationState harus READY untuk melanjutkan langkah sinkronisasi terakhir.

Jika Anda memulai langkah sinkronisasi akhir sebelum waktunya, perintah akan menampilkan pesan error The relocate bucket operation is not ready to advance to finalization running state, tetapi proses relokasi akan berlanjut.

Sebaiknya tunggu hingga nilai progressPercent menjadi 99 sebelum memulai langkah sinkronisasi akhir.

Command line

Mulai langkah sinkronisasi akhir operasi Pemindahan Bucket setelah nilai finalizationState adalah READY:

gcloud storage buckets relocate --finalize --operation=projects/_/BUCKET_NAME/operations/OPERATION_ID

Dengan keterangan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.
  • OPERATION_ID adalah ID operasi yang berjalan lama, yang ditampilkan dalam respons metode yang Anda panggil. Misalnya, respons berikut ditampilkan dari panggilan gcloud storage operations list dan ID operasi yang berjalan lama adalah AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74.
 `name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74` 

Tetapkan tanda ttl untuk memiliki kontrol yang lebih besar atas proses relokasi. Contoh:

gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/BUCKET_NAME/operations/OPERATION_ID

Dengan keterangan:

TTL_DURATION adalah Time to live (TTL) untuk fase periode nonaktif penulisan selama proses relokasi. Nilai ini dinyatakan sebagai string, seperti 12h selama 12 jam. TTL_DURATION menentukan durasi maksimum yang diizinkan untuk fase periode nonaktif operasi tulis. Jika periode nonaktif operasi tulis melebihi batas ini, proses relokasi akan otomatis dikembalikan ke langkah salin inkremental, dan operasi tulis ke bucket akan diaktifkan kembali. Nilai harus dalam rentang 6h (6 jam) hingga 48h (48 jam). Jika tidak ditentukan, nilai defaultnya adalah 12h (12 jam).

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 setelan untuk pemindahan bucket. Lihat dokumentasi Buckets: advanceRelocateBucket untuk mengetahui daftar lengkap setelan. Berikut adalah setelan umum yang harus disertakan:

    {
        "expireTime": "EXPIRE_TIME",
        "ttl": "TTL_DURATION"
    }

    Dengan keterangan:

    • EXPIRE_TIME adalah waktu habis masa berlaku periode nonaktif operasi tulis.
    • TTL_DURATION adalah Time to live (TTL) untuk fase periode nonaktif penulisan selama proses relokasi. Nilai ini dinyatakan sebagai string, seperti 12h selama 12 jam. TTL_DURATION menentukan durasi maksimum yang diizinkan untuk fase periode nonaktif operasi tulis. Jika periode nonaktif operasi tulis melebihi batas ini, proses relokasi akan otomatis dikembalikan ke langkah salin inkremental, dan operasi tulis ke bucket akan diaktifkan kembali. Nilai harus dalam rentang 6h (6 jam) hingga 48h (48 jam). Jika tidak ditentukan, nilai defaultnya adalah 12h (12 jam).
  3. Gunakan cURL untuk memanggil JSON API:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/bucket/BUCKET_NAME/operations/OPERATION_ID/advanceRelocateBucket"

    Dengan keterangan:

    • JSON_FILE_NAME adalah nama file JSON yang Anda buat.
    • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.
    • OPERATION_ID adalah ID operasi yang berjalan lama, yang ditampilkan dalam respons metode yang Anda panggil. Misalnya, respons berikut ditampilkan dari panggilan Operations: list dan ID operasi yang berjalan lama adalah AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74.

Memvalidasi proses pemindahan bucket

Setelah memulai relokasi, verifikasi bahwa relokasi berhasil diselesaikan. Bagian ini memberikan panduan tentang cara mengonfirmasi keberhasilan transfer data.

Validasi keberhasilan proses relokasi menggunakan metode berikut:

  • Melakukan polling operasi yang berjalan lama: Pemindahan bucket adalah operasi yang berjalan lama. Anda dapat melakukan polling pada operasi yang berjalan lama menggunakan operation id untuk memantau progres operasi dan mengonfirmasi penyelesaiannya yang berhasil dengan memverifikasi status success. Hal ini melibatkan kueri status operasi secara berkala hingga mencapai status terminal. Untuk informasi tentang cara memantau operasi yang berjalan lama, lihat Menggunakan operasi yang berjalan lama di Cloud Storage.

  • Menganalisis entri Cloud Audit Logs: Cloud Audit Logs memberikan catatan terperinci tentang peristiwa dan operasi di lingkungan Google Cloud Anda. Anda dapat menganalisis entri Cloud Audit Logs yang terkait dengan relokasi untuk memvalidasi keberhasilannya. Analisis log untuk menemukan error, peringatan, atau perilaku tidak terduga yang mungkin menunjukkan masalah selama transfer. Untuk mengetahui informasi tentang cara melihat log Cloud Audit Logs, lihat Melihat log audit.

    Entri log berikut membantu Anda menentukan apakah tindakan Anda berhasil atau gagal:

    • Pemindahan berhasil: Relocate bucket succeeded. All existing objects are now in the new placement configuration.

    • Pemindahan gagal: Relocate bucket has failed. Bucket location remains unchanged.

    Dengan menggunakan notifikasi Pub/Sub, Anda juga dapat menyiapkan pemberitahuan yang memberi tahu saat peristiwa keberhasilan atau kegagalan tertentu muncul di log. Untuk informasi tentang cara menyiapkan notifikasi Pub/Sub, lihat Mengonfigurasi notifikasi Pub/Sub untuk Cloud Storage.

Menyelesaikan tugas pasca-relokasi bucket

Setelah berhasil memindahkan bucket, selesaikan langkah-langkah berikut:

  1. Opsional: Pulihkan kontrol akses berbasis tag di bucket Anda.
  2. Konfigurasi laporan inventaris yang ada tidak dipertahankan selama proses relokasi dan Anda harus membuatnya ulang secara manual. Untuk informasi tentang cara membuat konfigurasi laporan inventaris, lihat Membuat konfigurasi laporan inventaris.
  3. Perbarui konfigurasi infrastruktur sebagai kode seperti konektor konfigurasi Terraform dan Google Kubernetes Engine untuk menentukan lokasi baru bucket.
  4. Endpoint regional terikat dengan lokasi tertentu, dan Anda harus mengubah kode aplikasi untuk mencerminkan endpoint baru.

Cara menangani operasi pemindahan bucket yang gagal

Pertimbangkan faktor-faktor berikut sebelum menangani operasi pemindahan bucket yang gagal:

  • Pemindahan bucket yang gagal dapat menyebabkan resource yang sudah tidak digunakan lagi, seperti file sementara atau salinan data yang tidak lengkap, tetap ada di tujuan. Anda harus menunggu 7 hingga 14 hari sebelum memulai pemindahan bucket lain ke tujuan yang sama. Anda dapat langsung memulai relokasi bucket ke tujuan lain.

  • Jika lokasi tujuan bukan lokasi yang optimal untuk data Anda, sebaiknya rollback relokasi. Namun, Anda tidak dapat langsung memulai pemindahan. Anda harus menunggu hingga 14 hari sebelum dapat memulai proses relokasi lagi. Batasan ini diterapkan untuk memastikan stabilitas dan mencegah konflik data.

Langkah berikutnya