Melakukan transfer antar bucket Cloud Storage

Storage Transfer Service dapat digunakan untuk mentransfer data dalam jumlah besar antar-bucket Cloud Storage, baik dalam project Google Cloud yang sama, maupun antar-project yang berbeda.

Migrasi bucket berguna dalam sejumlah skenario. Lokasi ini dapat digunakan untuk menggabungkan data dari project yang terpisah, memindahkan data ke lokasi cadangan, atau mengubah lokasi data Anda.

Kapan menggunakan Storage Transfer Service

Google Cloud menawarkan beberapa opsi untuk mentransfer data antar-bucket Cloud Storage. Sebaiknya ikuti panduan berikut:

  • Mentransfer kurang dari 1 TB: Gunakan gsutil atau gcloud. Untuk mengetahui petunjuknya, lihat Memindahkan dan mengganti nama bucket.

  • Mentransfer lebih dari 1 TB: Gunakan Storage Transfer Service. Storage Transfer Service adalah opsi transfer terkelola yang memberikan keamanan, keandalan, dan performa siap pakai. Dengan tindakan ini, Anda tidak perlu mengoptimalkan dan mengelola skrip, serta menangani percobaan ulang.

Panduan ini membahas praktik terbaik saat mentransfer data antar-bucket Cloud Storage menggunakan Storage Transfer Service.

Menentukan strategi transfer

Tampilan strategi transfer Anda bergantung pada kompleksitas situasi Anda. Pastikan untuk menyertakan pertimbangan berikut dalam rencana Anda.

Pilih nama bucket

Untuk memindahkan data ke bucket penyimpanan dengan lokasi yang berbeda, pilih salah satu pendekatan berikut:

  • Nama bucket baru. Update aplikasi Anda agar mengarah ke bucket penyimpanan dengan nama yang berbeda.
  • Pertahankan nama bucket. Ganti bucket penyimpanan Anda dengan tetap menggunakan nama saat ini. Artinya, Anda tidak perlu mengupdate aplikasi.

Dalam kedua kasus tersebut, Anda harus merencanakan periode nonaktif, dan memberi tahu pengguna yang sesuai bahwa periode nonaktif akan segera terjadi. Tinjau penjelasan berikut untuk memahami pilihan mana yang terbaik bagi Anda.

Nama bucket baru

Dengan nama baru untuk bucket, Anda harus mengupdate semua kode dan layanan yang menggunakan bucket Anda saat ini. Cara melakukannya bergantung pada cara aplikasi dibangun dan di-deploy.

Untuk penyiapan tertentu, pendekatan ini mungkin memiliki periode nonaktif yang lebih sedikit, tetapi memerlukan lebih banyak upaya untuk memastikan transisi yang lancar. Tahap ini melibatkan langkah-langkah berikut:

  1. Menyalin data Anda ke bucket penyimpanan baru.
  2. Memulai periode nonaktif Anda.
  3. Mengupdate aplikasi agar mengarah ke bucket baru.
  4. Memverifikasi bahwa semuanya berfungsi seperti yang diharapkan, serta bahwa semua sistem dan akun yang relevan memiliki akses ke bucket.
  5. Menghapus bucket asli.
  6. Mengakhiri periode nonaktif Anda.

Pertahankan nama bucket

Gunakan pendekatan ini jika Anda memilih untuk tidak mengubah kode agar mengarah ke nama bucket baru. Tahap ini melibatkan langkah-langkah berikut:

  1. Menyalin data Anda ke bucket penyimpanan sementara.
  2. Memulai periode nonaktif Anda.
  3. Menghapus bucket asli.
  4. Membuat bucket baru dengan nama yang sama seperti bucket asli.
  5. Menyalin data ke bucket baru dari bucket sementara.
  6. Menghapus bucket sementara.
  7. Memverifikasi bahwa semuanya berfungsi seperti yang diharapkan, serta bahwa semua sistem dan akun yang relevan memiliki akses ke bucket.
  8. Mengakhiri periode nonaktif Anda.

Meminimalkan periode nonaktif

Storage Transfer Service tidak mengunci pembacaan atau penulisan pada bucket sumber atau tujuan selama proses transfer.

Jika memilih untuk mengunci pembacaan/penulisan secara manual di bucket, Anda dapat meminimalkan periode nonaktif dengan mentransfer data dalam dua langkah: seed dan sinkronisasi.

  1. Transfer seed: Melakukan transfer massal tanpa mengunci operasi baca/tulis pada sumber.

  2. Transfer sinkronisasi: Setelah operasi pertama selesai, kunci baca/tulis di bucket sumber dan lakukan transfer lagi. Transfer Storage Transfer Service bersifat inkremental secara default, sehingga transfer kedua ini hanya mentransfer data yang berubah selama transfer seed.

Mengoptimalkan kecepatan transfer

Saat memperkirakan waktu yang diperlukan untuk tugas transfer, pertimbangkan kemungkinan bottleneck. Misalnya, jika sumber memiliki miliaran file kecil, kecepatan transfer Anda akan terikat QPS. Jika ukuran objek besar, bandwidth mungkin menjadi bottleneck.

Batas bandwidth ditetapkan pada tingkat region dan dialokasikan secara adil di semua project. Jika tersedia bandwidth yang cukup, Storage Transfer Service dapat menyelesaikan sekitar 1.000 tugas per tugas transfer per detik. Dalam hal ini, Anda dapat mempercepat transfer dengan membagi tugas menjadi beberapa tugas transfer kecil, misalnya menggunakan sertakan dan kecualikan awalan untuk mentransfer file tertentu.

Jika lokasi, kelas penyimpanan, dan kunci enkripsi sama, Storage Transfer Service tidak membuat salinan baru byte; melainkan membuat entri metadata baru yang mengarah ke blob sumber. Akibatnya, salinan class dan lokasi yang sama dari korpus besar diselesaikan dengan sangat cepat dan hanya terikat QPS.

Penghapusan juga merupakan operasi khusus metadata. Untuk transfer ini, memparalelkan transfer dengan membaginya menjadi beberapa tugas kecil dapat meningkatkan kecepatan.

Mempertahankan metadata

Metadata objek berikut dipertahankan saat mentransfer data antara bucket Cloud Storage dengan Storage Transfer Service:

  • Metadata kustom buatan pengguna.
  • Kolom metadata kunci tetap Cloud Storage, seperti Cache-Control, Content-Disposition, Content-Type, dan Custom-Time.
  • Ukuran objek.
  • Nomor generasi dipertahankan sebagai kolom metadata kustom dengan kunci x-goog-reserved-source-generation, yang dapat diedit atau dihapus nanti.

Secara opsional, kolom metadata berikut dapat dipertahankan saat mentransfer menggunakan API:

  • ACL (acl)
  • Kelas penyimpanan (storageClass)
  • CMEK (kmsKey)
  • Penangguhan sementara (temporaryHold)
  • Waktu pembuatan objek (customTime)

Lihat referensi API TransferSpec untuk detail selengkapnya.

Kolom metadata berikut tidak dipertahankan:

  • Waktu terakhir diperbarui (updated)
  • etag
  • componentCount

Jika dipertahankan, waktu pembuatan objek akan disimpan sebagai kolom kustom, customTime. Waktu updated objek direset saat transfer, sehingga waktu objek yang dihabiskan di kelas penyimpanannya juga direset. Artinya, objek dalam Coldline Storage setelah transfer harus ada lagi selama 90 hari di tujuan untuk menghindari biaya penghapusan lebih awal.

Anda dapat menerapkan kebijakan siklus proses berbasis createTime menggunakan customTime. Nilai customTime yang ada akan ditimpa.

Untuk detail selengkapnya tentang hal yang dipertahankan dan yang tidak dipertahankan, lihat Penyimpanan metadata.

Menangani objek berversi

Jika ingin mentransfer semua versi objek penyimpanan dan bukan hanya yang terbaru, Anda harus menggunakan CLI gcloud atau REST API untuk mentransfer data, yang dikombinasikan dengan fitur manifes Storage Transfer Service.

Untuk mentransfer semua versi objek:

  1. Buat daftar objek bucket dan salin ke dalam file JSON:

    gcloud storage ls --all-versions --recursive --json [SOURCE_BUCKET] > object-listing.json
    

    Perintah ini biasanya mencantumkan sekitar 1.000 objek per detik.

  2. Bagi file JSON menjadi dua file CSV, satu file dengan versi lama, dan satu lagi dengan versi aktif:

    jq -r '.[] | select( .type=="cloud_object" and (.metadata | has("timeDeleted") | not)) | [.metadata.name, .metadata.generation] | @csv' object-listing.json > live-object-manifest.csv
    jq -r '.[] | select( .type=="cloud_object" and (.metadata | has("timeDeleted"))) | [.metadata.name, .metadata.generation] | @csv' object-listing.json > non-current-object-manifest.csv
    
  3. Aktifkan pembuatan versi objek di bucket tujuan.

  4. Transfer versi lama terlebih dahulu dengan meneruskan file manifes non-current-object-manifest.csv sebagai nilai kolom transferManifest.

  5. Kemudian, transfer versi aktif dengan cara yang sama, dengan menentukan live-object-manifest.csv sebagai file manifes.

Mengonfigurasi opsi transfer

Beberapa opsi yang tersedia bagi Anda saat menyiapkan transfer adalah sebagai berikut:

  • Logging: Cloud Logging menyediakan log mendetail untuk setiap objek, sehingga Anda dapat memverifikasi status transfer dan melakukan pemeriksaan integritas data tambahan.

  • Pemfilteran: Anda dapat menggunakan awalan sertakan dan mengecualikan untuk membatasi objek yang dioperasikan oleh Storage Transfer Service. Opsi ini dapat digunakan untuk membagi transfer menjadi beberapa tugas transfer agar dapat berjalan secara paralel. Lihat Mengoptimalkan kecepatan transfer untuk mengetahui informasi selengkapnya.

  • Opsi transfer: Anda dapat mengonfigurasi transfer untuk menimpa item yang sudah ada di bucket tujuan; untuk menghapus objek di tujuan yang tidak ada di set transfer; atau untuk menghapus objek yang ditransfer dari sumbernya.

Mentransfer data Anda

Setelah menentukan strategi transfer, Anda dapat melakukan transfer itu sendiri.

Buat bucket baru

Sebelum memulai transfer, buat bucket penyimpanan. Lihat location_considerations untuk mendapatkan bantuan dalam memilih lokasi bucket yang sesuai.

Anda mungkin ingin menyalin beberapa metadata bucket saat membuat bucket baru. Baca artikel Mendapatkan metadata bucket untuk mempelajari cara menampilkan metadata bucket sumber, sehingga Anda dapat menerapkan setelan yang sama ke bucket baru.

Menyalin objek ke bucket baru

Anda dapat menyalin objek dari bucket sumber ke bucket baru menggunakan Google Cloud Console, gcloud CLI, REST API, atau library klien. Pendekatan yang Anda pilih bergantung pada strategi transfer Anda.

Petunjuk berikut ditujukan untuk kasus penggunaan dasar mentransfer objek dari satu bucket ke bucket lainnya, dan harus dimodifikasi agar sesuai dengan kebutuhan Anda.

Jangan sertakan informasi sensitif seperti informasi identitas pribadi (PII) atau data keamanan dalam nama tugas transfer Anda. Nama resource dapat diterapkan ke nama resource Google Cloud lainnya dan dapat diekspos ke sistem internal Google di luar project Anda.

Konsol Google Cloud

Gunakan Cloud Storage Transfer Service dari dalam Konsol Google Cloud:

  1. Buka halaman Transfer di konsol Google Cloud.

    Buka halaman Transfer

  2. Klik Buat tugas transfer.
  3. Ikuti panduan langkah demi langkah, dengan mengklik Langkah berikutnya saat Anda menyelesaikan setiap langkah:

    • Memulai: Gunakan Google Cloud Storage sebagai Source Type dan Destination Type.

    • Pilih sumber: Masukkan nama bucket yang diinginkan secara langsung, atau klik Browse untuk menemukan dan memilih bucket yang diinginkan.

    • Pilih tujuan: Masukkan nama bucket yang diinginkan secara langsung, atau klik Jelajahi untuk menemukan dan memilih bucket yang Anda inginkan.

    • Pilih setelan: Pilih opsi Hapus file dari sumber setelah file ditransfer.

    • Opsi penjadwalan: Anda dapat mengabaikan bagian ini.

  4. Setelah menyelesaikan panduan langkah demi langkah, klik Buat.

    Tindakan ini akan memulai proses penyalinan objek dari bucket lama ke bucket baru. Proses ini mungkin memakan waktu. Namun, setelah mengklik Buat, Anda dapat keluar dari konsol Google Cloud.

    Untuk melihat progres transfer:

    Buka halaman Transfer di konsol Google Cloud.

    Buka halaman Transfer

    Untuk mempelajari cara mendapatkan informasi error mendetail tentang operasi Storage Transfer Service yang gagal di Konsol Google Cloud, lihat Pemecahan masalah.

  5. Setelah transfer selesai, Anda tidak perlu melakukan apa pun untuk menghapus objek dari bucket lama jika telah memilih kotak centang Hapus objek sumber setelah transfer selesai selama penyiapan. Namun, Anda mungkin juga ingin menghapus bucket lama, yang harus dilakukan secara terpisah.

gcloud CLI

Menginstal gcloud CLI

Instal alat command line gcloud jika Anda belum melakukannya.

Kemudian, panggil gcloud init untuk menginisialisasi alat tersebut dan menentukan project ID dan akun pengguna Anda. Baca bagian Melakukan Inisialisasi Cloud SDK untuk mengetahui detail selengkapnya.

gcloud init

Tambahkan akun layanan ke folder tujuan

Anda harus menambahkan akun layanan Storage Transfer Service ke bucket tujuan sebelum membuat transfer. Untuk melakukannya, gunakan gsutil iam ch:

gsutil iam ch serviceAccount:project-12345678@storage-transfer-service.iam.gserviceaccount.com:roles/storage.admin gs://bucket_name

Untuk petunjuk menggunakan konsol Google Cloud atau API, lihat Menggunakan izin IAM dalam dokumentasi Cloud Storage.

Membuat tugas transfer

Untuk membuat tugas transfer baru, gunakan perintah gcloud transfer jobs create. Membuat tugas baru akan memulai transfer yang ditentukan, kecuali jika jadwal atau --do-not-run ditentukan.

gcloud transfer jobs create SOURCE DESTINATION

Dengan keterangan:

  • SOURCE adalah sumber data untuk transfer ini, dalam format gs://BUCKET_NAME.

  • DESTINATION adalah bucket baru Anda, dalam format gs://BUCKET_NAME.

Opsi tambahan mencakup:

  • Informasi pekerjaan: Anda dapat menentukan --name dan --description.

  • Jadwal: Tentukan --schedule-starts, --schedule-repeats-every, dan --schedule-repeats-until, atau --do-not-run.

  • Kondisi objek: Gunakan kondisi untuk menentukan objek mana yang ditransfer. Situasi tersebut mencakup --include-prefixes dan --exclude-prefixes, serta kondisi berbasis waktu di --include-modified-[before | after]-[absolute | relative].

  • Opsi transfer: Tentukan apakah akan menimpa file tujuan (--overwrite-when=different atau always) dan apakah akan menghapus file tertentu selama atau setelah transfer (--delete-from=destination-if-unique atau source-after-transfer); tentukan metadata [nilai metadata yang perlu dipertahankan]; dan tetapkan kelas penyimpanan secara opsional pada objek yang ditransfer (--custom-storage-class).

  • Notifications: Konfigurasikan notifikasi Pub/Sub untuk transfer dengan --notification-pubsub-topic, --notification-event-types, dan --notification-payload-format.

Untuk melihat semua opsi, jalankan gcloud transfer jobs create --help.

Misalnya, untuk mentransfer semua objek dengan awalan folder1:

gcloud transfer jobs create gs://old-bucket gs://new-bucket \
  --include-prefixes="folder1/"

REST

Dalam contoh ini, Anda akan mempelajari cara memindahkan file dari satu bucket Cloud Storage ke bucket lainnya. Misalnya, Anda dapat memindahkan data ke bucket di lokasi lain.

Minta menggunakan transferJobs create:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "description": "YOUR DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "schedule": {
      "scheduleStartDate": {
          "day": 1,
          "month": 1,
          "year": 2025
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      },
      "scheduleEndDate": {
          "day": 1,
          "month": 1,
          "year": 2025
      }
  },
  "transferSpec": {
      "gcsDataSource": {
          "bucketName": "GCS_SOURCE_NAME"
      },
      "gcsDataSink": {
          "bucketName": "GCS_SINK_NAME"
      },
      "transferOptions": {
          "deleteObjectsFromSourceAfterTransfer": true
      }
  }
}

Respons:

200 OK
{
  "transferJob": [
      {
          "creationTime": "2015-01-01T01:01:00.000000000Z",
          "description": "YOUR DESCRIPTION",
          "name": "transferJobs/JOB_ID",
          "status": "ENABLED",
          "lastModificationTime": "2015-01-01T01:01:00.000000000Z",
          "projectId": "PROJECT_ID",
          "schedule": {
              "scheduleStartDate": {
                  "day": 1,
                  "month": 1,
                  "year": 2015
              },
              "startTimeOfDay": {
                  "hours": 1,
                  "minutes": 1
              }
          },
          "transferSpec": {
              "gcsDataSource": {
                  "bucketName": "GCS_SOURCE_NAME",
              },
              "gcsDataSink": {
                  "bucketName": "GCS_NEARLINE_SINK_NAME"
              },
              "objectConditions": {
                  "minTimeElapsedSinceLastModification": "2592000.000s"
              },
              "transferOptions": {
                  "deleteObjectsFromSourceAfterTransfer": true
              }
          }
      }
  ]
}

Library klien

Dalam contoh ini, Anda akan mempelajari cara memindahkan file dari satu bucket Cloud Storage ke bucket lainnya. Misalnya, Anda dapat mereplikasi data ke bucket di lokasi lain.

Untuk informasi selengkapnya tentang library klien Storage Transfer Service, lihat Mulai menggunakan library klien Storage Transfer Service.

Java

Mencari sampel lama? Lihat Panduan Migrasi Storage Transfer Service.

import com.google.protobuf.Duration;
import com.google.storagetransfer.v1.proto.StorageTransferServiceClient;
import com.google.storagetransfer.v1.proto.TransferProto.CreateTransferJobRequest;
import com.google.storagetransfer.v1.proto.TransferTypes.GcsData;
import com.google.storagetransfer.v1.proto.TransferTypes.ObjectConditions;
import com.google.storagetransfer.v1.proto.TransferTypes.Schedule;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob.Status;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferOptions;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferSpec;
import com.google.type.Date;
import com.google.type.TimeOfDay;
import java.io.IOException;
import java.util.Calendar;

public class TransferToNearline {
  /**
   * Creates a one-off transfer job that transfers objects in a standard GCS bucket that are more
   * than 30 days old to a Nearline GCS bucket.
   */
  public static void transferToNearline(
      String projectId,
      String jobDescription,
      String gcsSourceBucket,
      String gcsNearlineSinkBucket,
      long startDateTime)
      throws IOException {

    // Your Google Cloud Project ID
    // String projectId = "your-project-id";

    // A short description of this job
    // String jobDescription = "Sample transfer job of old objects to a Nearline GCS bucket.";

    // The name of the source GCS bucket to transfer data from
    // String gcsSourceBucket = "your-gcs-source-bucket";

    // The name of the Nearline GCS bucket to transfer old objects to
    // String gcsSinkBucket = "your-nearline-gcs-bucket";

    // What day and time in UTC to start the transfer, expressed as an epoch date timestamp.
    // If this is in the past relative to when the job is created, it will run the next day.
    // long startDateTime =
    //     new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2000-01-01 00:00:00").getTime();

    // Parse epoch timestamp into the model classes
    Calendar startCalendar = Calendar.getInstance();
    startCalendar.setTimeInMillis(startDateTime);
    // Note that this is a Date from the model class package, not a java.util.Date
    Date date =
        Date.newBuilder()
            .setYear(startCalendar.get(Calendar.YEAR))
            .setMonth(startCalendar.get(Calendar.MONTH) + 1)
            .setDay(startCalendar.get(Calendar.DAY_OF_MONTH))
            .build();
    TimeOfDay time =
        TimeOfDay.newBuilder()
            .setHours(startCalendar.get(Calendar.HOUR_OF_DAY))
            .setMinutes(startCalendar.get(Calendar.MINUTE))
            .setSeconds(startCalendar.get(Calendar.SECOND))
            .build();

    TransferJob transferJob =
        TransferJob.newBuilder()
            .setDescription(jobDescription)
            .setProjectId(projectId)
            .setTransferSpec(
                TransferSpec.newBuilder()
                    .setGcsDataSource(GcsData.newBuilder().setBucketName(gcsSourceBucket))
                    .setGcsDataSink(GcsData.newBuilder().setBucketName(gcsNearlineSinkBucket))
                    .setObjectConditions(
                        ObjectConditions.newBuilder()
                            .setMinTimeElapsedSinceLastModification(
                                Duration.newBuilder().setSeconds(2592000 /* 30 days */)))
                    .setTransferOptions(
                        TransferOptions.newBuilder().setDeleteObjectsFromSourceAfterTransfer(true)))
            .setSchedule(Schedule.newBuilder().setScheduleStartDate(date).setStartTimeOfDay(time))
            .setStatus(Status.ENABLED)
            .build();

    // Create a Transfer Service client
    StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();

    // Create the transfer job
    TransferJob response =
        storageTransfer.createTransferJob(
            CreateTransferJobRequest.newBuilder().setTransferJob(transferJob).build());

    System.out.println("Created transfer job from standard bucket to Nearline bucket:");
    System.out.println(response.toString());
  }
}

Python

Mencari sampel lama? Lihat Panduan Migrasi Storage Transfer Service.

from datetime import datetime

from google.cloud import storage_transfer
from google.protobuf.duration_pb2 import Duration

def create_daily_nearline_30_day_migration(
    project_id: str,
    description: str,
    source_bucket: str,
    sink_bucket: str,
    start_date: datetime,
):
    """Create a daily migration from a GCS bucket to a Nearline GCS bucket
    for objects untouched for 30 days."""

    client = storage_transfer.StorageTransferServiceClient()

    # The ID of the Google Cloud Platform Project that owns the job
    # project_id = 'my-project-id'

    # A useful description for your transfer job
    # description = 'My transfer job'

    # Google Cloud Storage source bucket name
    # source_bucket = 'my-gcs-source-bucket'

    # Google Cloud Storage destination bucket name
    # sink_bucket = 'my-gcs-destination-bucket'

    transfer_job_request = storage_transfer.CreateTransferJobRequest(
        {
            "transfer_job": {
                "project_id": project_id,
                "description": description,
                "status": storage_transfer.TransferJob.Status.ENABLED,
                "schedule": {
                    "schedule_start_date": {
                        "day": start_date.day,
                        "month": start_date.month,
                        "year": start_date.year,
                    }
                },
                "transfer_spec": {
                    "gcs_data_source": {
                        "bucket_name": source_bucket,
                    },
                    "gcs_data_sink": {
                        "bucket_name": sink_bucket,
                    },
                    "object_conditions": {
                        "min_time_elapsed_since_last_modification": Duration(
                            seconds=2592000  # 30 days
                        )
                    },
                    "transfer_options": {
                        "delete_objects_from_source_after_transfer": True
                    },
                },
            }
        }
    )

    result = client.create_transfer_job(transfer_job_request)
    print(f"Created transferJob: {result.name}")

Verifikasi objek yang disalin

Setelah transfer selesai, sebaiknya lakukan pemeriksaan integritas data tambahan.

  • Validasi bahwa objek telah disalin dengan benar, dengan memverifikasi metadata pada objek, seperti checksum dan ukuran.

  • Pastikan bahwa versi objek yang benar telah disalin. Storage Transfer Service menawarkan opsi siap pakai untuk memverifikasi bahwa objek adalah salinan. Jika Anda telah mengaktifkan logging, lihat log untuk memverifikasi apakah semua objek berhasil disalin, termasuk kolom metadata yang sesuai.

Mulai menggunakan bucket tujuan

Setelah migrasi selesai dan diverifikasi, perbarui aplikasi atau workload yang ada agar menggunakan nama bucket target. Periksa log akses data di Cloud Audit Logs untuk memastikan bahwa operasi Anda memodifikasi dan membaca objek dengan benar.

Menghapus bucket asli

Setelah semuanya berfungsi dengan baik, hapus bucket asli.

Storage Transfer Service menawarkan opsi untuk menghapus objek setelah ditransfer dengan menentukan deleteObjectsFromSourceAfterTransfer: true dalam konfigurasi tugas, atau memilih opsi di Konsol Google Cloud.

Menjadwalkan penghapusan objek

Untuk menjadwalkan penghapusan objek Anda di kemudian hari, gunakan kombinasi tugas transfer terjadwal, dan opsi deleteObjectsUniqueInSink = true.

Tugas transfer harus disiapkan untuk mentransfer bucket kosong ke dalam bucket yang berisi objek Anda. Hal ini menyebabkan Storage Transfer Service mencantumkan objek dan mulai menghapusnya. Karena penghapusan adalah operasi khusus metadata, tugas transfer hanya terikat QPS. Untuk mempercepat prosesnya, bagi transfer menjadi beberapa tugas, yang masing-masing bertindak pada kumpulan awalan yang berbeda.

Sebagai alternatif, Google Cloud menawarkan penjadwal cron job terkelola. Untuk mengetahui informasi selengkapnya, lihat artikel Menjadwalkan Tugas Transfer Google Cloud STS dengan Cloud Scheduler.