Storage Transfer Service dapat memproses notifikasi peristiwa di Google Cloud untuk otomatis mentransfer data yang telah ditambahkan atau diperbarui di bucket Cloud Storage. Pelajari lebih lanjut manfaat transfer berbasis peristiwa.
Transfer berbasis peristiwa dari Cloud Storage menggunakan notifikasi Pub/Sub untuk mengetahui kapan objek di bucket sumber telah diubah atau ditambahkan. Penghapusan objek tidak terdeteksi; menghapus objek di sumber tidak akan menghapus objek terkait di bucket tujuan.
Transfer berbasis peristiwa selalu menggunakan bucket Cloud Storage sebagai tujuan.
Mengonfigurasi izin
Temukan nama agen layanan Storage Transfer Service untuk project Anda:
Buka halaman referensi
googleServiceAccounts.get.Panel interaktif akan terbuka, dengan judul Try this method.
Di panel, di bagian Request parameters, masukkan ID project Anda. Project yang Anda tentukan di sini harus merupakan project yang Anda gunakan untuk mengelola Storage Transfer Service, yang mungkin berbeda dengan project bucket sumber.
Klik Execute.
Email agen layanan Anda akan ditampilkan sebagai nilai
accountEmail. Salin nilai ini.Email agen layanan menggunakan format
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.Berikan peran
Pub/Sub Subscriberkepada agen layanan Storage Transfer Service.Cloud Console
Ikuti petunjuk di Mengontrol akses melalui Google Cloud konsol untuk memberikan peran
Pub/Sub Subscriberke layanan Storage Transfer Service. Peran dapat diberikan di tingkat topik, langganan, atau project.CLI
gcloudIkuti petunjuk di Menetapkan kebijakan untuk menambahkan binding berikut:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Mengonfigurasi Pub/Sub
Pastikan Anda telah memenuhi Prasyarat untuk menggunakan Pub/Sub dengan Cloud Storage.
Buat notifikasi Pub/Sub untuk bucket Cloud Storage sumber.
Anda tidak dapat mengelola notifikasi Pub/Sub dengan Google Cloud konsol. Gunakan gcloud CLI atau salah satu library klien yang tersedia sebagai gantinya.
gcloud storage buckets notifications create gs://SOURCE_BUCKET_NAME --topic=TOPIC_NAME
Buat langganan pull untuk topik. Anda harus membuat langganan terpisah untuk setiap tugas transfer.
Contoh berikut menunjukkan perintah Google Cloud CLI untuk membuat langganan pull. Untuk petunjuk konsol dan kode library klien, lihat Membuat langganan pull.
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Membuat tugas transfer
Anda dapat menggunakan REST API atau Google Cloud konsol untuk membuat tugas transfer berbasis peristiwa.
Jangan menyertakan informasi sensitif seperti informasi identitas pribadi (PII) atau data keamanan dalam nama tugas transfer Anda. Nama resource dapat disebarkan ke nama resource Google Cloud lainnya dan dapat diekspos ke sistem internal Google di luar project Anda.
Cloud Console
Buka halaman Create transfer job di Google Cloud konsol.
Pilih Cloud Storage sebagai sumber dan tujuan.
Sebagai Scheduling mode , pilih Event-driven , lalu klik Next step.
Pilih bucket sumber untuk transfer ini.
Di bagian Event stream, masukkan nama langganan:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_IDSecara opsional, tentukan filter apa pun, lalu klik Next step.
Pilih bucket tujuan untuk transfer ini.
Secara opsional, masukkan waktu mulai dan berakhir untuk transfer. Jika Anda tidak menentukan waktu, transfer akan segera dimulai dan akan berjalan hingga dihentikan secara manual.
Tentukan opsi transfer apa pun. Informasi selengkapnya tersedia di halaman Membuat transfer.
Klik Create.
Setelah dibuat, tugas transfer akan mulai berjalan dan pemroses peristiwa akan menunggu notifikasi di langganan Pub/Sub. Halaman detail tugas menampilkan satu operasi setiap jam, dan menyertakan detail data yang ditransfer untuk setiap tugas.
REST
Untuk membuat transfer berbasis peristiwa menggunakan REST API, kirim objek JSON berikut ke endpoint transferJobs.create:
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "gcsDataSource" { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
eventStreamStartTime dan eventStreamExpirationTime bersifat opsional.
Jika waktu mulai dihilangkan, transfer akan segera dimulai; jika waktu berakhir dihilangkan, transfer akan berlanjut hingga dihentikan secara manual.
Library klien
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Storage Transfer Service, lihat library klien Storage Transfer Service. Untuk mengetahui informasi selengkapnya, lihat Storage Transfer Service Go API dokumentasi referensi.
Untuk melakukan autentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Storage Transfer Service, lihat library klien Storage Transfer Service. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Storage Transfer Service Java API.
Untuk melakukan autentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Storage Transfer Service, lihat library klien Storage Transfer Service. Untuk mengetahui informasi selengkapnya, lihat Storage Transfer Service Node.js API dokumentasi referensi.
Untuk melakukan autentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Storage Transfer Service, lihat library klien Storage Transfer Service. Untuk mengetahui informasi selengkapnya, lihat Storage Transfer Service Python API dokumentasi referensi.
Untuk melakukan autentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Memantau transfer berbasis peristiwa
Saat Anda membuat transfer berbasis peristiwa, Storage Transfer Service akan membuat tugas transfer. Setelah waktu mulai tercapai, operasi transfer akan mulai berjalan dan pemroses peristiwa akan menunggu notifikasi dari antrean Pub/Sub.
Operasi transfer berjalan, dengan status in progress, selama sekitar 24 jam. Setelah 24 jam, operasi akan selesai dan operasi baru akan dimulai.
Operasi baru dibuat setiap 24 jam hingga waktu berakhir tugas transfer tercapai, atau hingga tugas dihentikan secara manual.
Jika transfer file sedang berlangsung saat operasi dijadwalkan selesai, operasi saat ini akan tetap berlangsung hingga file berhasil ditransfer sepenuhnya. Operasi baru akan dimulai, dan kedua operasi akan berjalan secara bersamaan hingga operasi lama selesai. Setiap peristiwa yang terdeteksi selama periode ini akan ditangani oleh operasi baru.
Untuk melihat operasi saat ini dan operasi yang telah selesai:
Google Cloud Konsol
Buka halaman Storage Transfer Service di Google Cloud konsol.
Dalam daftar tugas, pilih tab All, atau Cloud-to-cloud.
Klik ID tugas untuk transfer Anda. Kolom Scheduling mode mengidentifikasi semua transfer berbasis peristiwa versus transfer batch.
Pilih tab Operations. Detail ditampilkan untuk operasi saat ini, dan operasi yang telah selesai dicantumkan dalam tabel Run history. Klik operasi yang telah selesai untuk melihat detail tambahan.
gcloud
Untuk memantau progres tugas secara real time, gunakan gcloud transfer jobs monitor. Respons menunjukkan operasi saat ini, waktu mulai tugas, jumlah data yang ditransfer, byte yang dilewati, dan jumlah error.
gcloud transfer jobs monitor JOB_NAME
Untuk mengambil nama operasi saat ini:
gcloud transfer jobs describe JOB_NAME --format="value(latestOperationName)"
Untuk mencantumkan operasi saat ini dan yang telah selesai:
gcloud transfer operations list --job-names=JOB_NAME
Untuk melihat detail tentang operasi:
gcloud transfer operations describe OPERATION_NAME