Storage Transfer Service dapat memproses notifikasi peristiwa di AWS atau Google Cloud untuk otomatis mentransfer data yang telah ditambahkan atau diperbarui di lokasi sumber. Transfer berbasis peristiwa didukung dari AWS S3 atau Cloud Storage ke Cloud Storage.
Transfer berbasis peristiwa memproses Notifikasi Peristiwa Amazon S3 yang dikirim ke Amazon SQS untuk sumber AWS S3. Sumber Cloud Storage mengirim notifikasi ke langganan Pub/Sub.
Manfaat transfer berbasis peristiwa
Karena transfer berbasis peristiwa memproses perubahan pada bucket sumber, update akan disalin ke tujuan secara hampir real time. Storage Transfer Service tidak perlu menjalankan operasi daftar terhadap sumber, sehingga menghemat waktu dan uang.
Kasus penggunaan mencakup:
Analisis berbasis peristiwa: Replikasikan data dari AWS ke Cloud Storage untuk menjalankan analisis dan pemrosesan.
Replikasi Cloud Storage: Mengaktifkan replikasi objek otomatis dan asinkron antara bucket Cloud Storage.
Transfer berbasis peristiwa dengan Storage Transfer Service berbeda dengan replikasi Cloud Storage standar karena membuat salinan data Anda di bucket yang berbeda.
Hal ini memberikan manfaat seperti:
- Menyimpan data pengembangan dan produksi di namespace terpisah.
- Membagikan data tanpa memberikan akses ke bucket asli.
- Mencadangkan ke benua lain, atau ke area yang tidak tercakup oleh penyimpanan dual-region dan multi-region.
Penyiapan DR/HA: Mereplikasi objek dari sumber ke tujuan pencadangan dalam hitungan menit:
- Pencadangan lintas-cloud: Membuat salinan cadangan AWS S3 di Cloud Storage.
- Pencadangan lintas region atau lintas project: Buat salinan bucket Cloud Storage di region atau project berbeda.
Migrasi langsung: Transfer berbasis peristiwa dapat mendukung migrasi periode nonaktif rendah, sesuai urutan menit periode nonaktif, sebagai langkah lanjutan untuk migrasi batch satu kali.
Menyiapkan transfer berbasis peristiwa dari Cloud Storage
Transfer berbasis peristiwa dari Cloud Storage menggunakan notifikasi Pub/Sub untuk mengetahui kapan objek dalam bucket sumber telah diubah atau ditambahkan. Penghapusan objek tidak terdeteksi; menghapus objek di sumber tidak akan menghapus objek terkait di bucket tujuan.
Konfigurasikan izin
Cari nama agen layanan Storage Transfer Service untuk project Anda:
Buka halaman referensi
googleServiceAccounts.get
.Panel interaktif akan terbuka, yang berjudul Coba metode ini.
Di panel, di bagian Parameter permintaan, masukkan ID project Anda. Project yang Anda tentukan di sini harus merupakan project yang Anda gunakan untuk mengelola Storage Transfer Service, yang mungkin berbeda dari project bucket sumber.
Klik Jalankan.
Email agen layanan Anda 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 Subscriber
ke agen layanan Storage Transfer Service.Cloud Console
Ikuti petunjuk di Mengontrol akses melalui Konsol Google Cloud untuk memberikan peran
Pub/Sub Subscriber
ke layanan Storage Transfer Service. Peran dapat diberikan pada level topik, langganan, atau project.CLI
gcloud
Ikuti petunjuk di Menyetel 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.
Mengonfigurasi notifikasi Pub/Sub untuk Cloud Storage:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME
Buat langganan pull untuk topik:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Membuat tugas transfer
Anda dapat menggunakan REST API atau Konsol Google Cloud untuk membuat tugas transfer berbasis peristiwa.
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.
Cloud Console
Buka halaman Buat tugas transfer di Konsol Google Cloud.
Pilih Cloud Storage sebagai sumber dan tujuan.
Saat Mode penjadwalan, pilih Berdasarkan peristiwa dan klik Langkah berikutnya.
Pilih bucket sumber untuk transfer ini.
Di bagian Aliran acara, masukkan nama langganan:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
Anda juga dapat menentukan filter apa pun, lalu klik Langkah berikutnya.
Pilih bucket tujuan untuk transfer ini.
(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 mulai berjalan dan pemroses peristiwa menunggu notifikasi tentang langganan Pub/Sub. Halaman detail tugas menampilkan satu operasi setiap jam, dan menyertakan detail tentang 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 dokumentasi referensi Storage Transfer Service Go API.
Untuk mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 dokumentasi referensi Storage Transfer Service Node.js API.
Untuk mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 dokumentasi referensi Storage Transfer Service Python API.
Untuk mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Menyiapkan transfer berbasis peristiwa dari AWS S3
Transfer berbasis peristiwa dari AWS S3 menggunakan notifikasi dari Amazon Simple Queue Service (SQS) untuk mengetahui kapan objek dalam bucket sumber telah diubah atau ditambahkan. Penghapusan objek tidak terdeteksi; menghapus objek di sumber tidak akan menghapus objek terkait di bucket tujuan.
Membuat antrean SQS
Di konsol AWS, buka halaman Simple Queue Service.
Klik Buat antrean.
Masukkan Nama untuk antrean ini.
Di bagian Kebijakan akses, pilih Lanjutan. Objek JSON ditampilkan:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__owner_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws:sqs:us-west-2:01234567890:test" } ] }
Nilai
AWS
danResource
bersifat unik untuk setiap project.Salin nilai spesifik
AWS
danResource
dari JSON yang ditampilkan ke dalam cuplikan JSON berikut:{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "RESOURCE", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS" }, "ArnLike": { "aws:SourceArn": "S3_BUCKET_ARN" } } } ] }
Nilai placeholder dalam JSON sebelumnya menggunakan format berikut:
- AWS adalah nilai numerik yang mewakili project Amazon Web Services
Anda. Contoh,
"aws:SourceAccount": "1234567890"
. - RESOURCE adalah Amazon Resource Number (ARN) yang mengidentifikasi
antrean ini. Misalnya,
"Resource": "arn:aws:sqs:us-west-2:01234567890:test"
. - S3_BUCKET_ARN adalah ARN yang mengidentifikasi bucket sumber. Misalnya,
"aws:SourceArn": "arn:aws:s3:::example-aws-bucket"
. Anda dapat menemukan ARN bucket dari tab Properties pada halaman detail bucket di konsol AWS.
- AWS adalah nilai numerik yang mewakili project Amazon Web Services
Anda. Contoh,
Ganti JSON yang ditampilkan di bagian Kebijakan akses dengan JSON yang diperbarui di atas.
Klik Buat antrean.
Setelah selesai, catat Amazon Resource Name (ARN) antrean. ARN memiliki format berikut:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Mengaktifkan notifikasi di bucket S3
Di konsol AWS, buka halaman S3.
Dalam daftar Buckets, pilih bucket sumber.
Pilih tab Properties.
Di bagian Notifikasi acara, klik Buat notifikasi acara.
Tentukan nama untuk peristiwa ini.
Di bagian Jenis peristiwa, pilih Semua peristiwa pembuatan objek.
Sebagai Destination, pilih SQS queue dan pilih antrean yang Anda buat untuk transfer ini.
Klik Simpan perubahan.
Konfigurasikan izin
Ikuti petunjuk dalam Mengonfigurasi akses ke sumber: Amazon S3 untuk membuat ID kunci akses dan kunci rahasia, atau peran Federated Identity.
Ganti JSON izin kustom dengan kode berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME", "arn:aws:s3:::AWS_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
Setelah dibuat, perhatikan informasi berikut:
- Untuk pengguna, catat ID kunci akses dan kunci rahasia.
- Untuk peran Federated Identity, catat Amazon Resource Name (ARN),
yang memiliki format
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Membuat tugas transfer
Anda dapat menggunakan REST API atau Konsol Google Cloud untuk membuat tugas transfer berbasis peristiwa.
Cloud Console
Buka halaman Buat tugas transfer di Konsol Google Cloud.
Pilih Amazon S3 sebagai jenis sumber, dan Cloud Storage sebagai tujuan.
Saat Mode penjadwalan, pilih Berdasarkan peristiwa dan klik Langkah berikutnya.
Masukkan nama bucket S3 Anda. Nama bucket adalah nama seperti yang muncul di AWS Management Console. Misalnya,
my-aws-bucket
.Pilih metode autentikasi dan masukkan informasi yang diminta, yang telah Anda buat dan catat di bagian sebelumnya.
Masukkan ARN antrean Amazon SQS yang telah Anda buat sebelumnya. Performance Planner menggunakan format berikut:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Anda juga dapat menentukan filter apa pun, lalu klik Langkah berikutnya.
Pilih bucket Cloud Storage tujuan dan, secara opsional, jalur.
(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 mulai berjalan dan pemroses peristiwa menunggu notifikasi di antrean SQS. Halaman detail tugas menunjukkan satu operasi setiap jam, dan menyertakan detail tentang 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" { "awsS3DataSource" { "bucketName": "AWS_SOURCE_NAME", "roleArn": "arn:aws:iam::1234567891011:role/role_for_federated_auth" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "arn:aws:sqs:us-east-1:1234567891011:s3-notification-queue", "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 dokumentasi referensi Storage Transfer Service Go API.
Untuk mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 dokumentasi referensi Storage Transfer Service Node.js API.
Untuk mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 dokumentasi referensi Storage Transfer Service Python API.
Untuk mengautentikasi ke Storage Transfer Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.