Halaman ini menjelaskan cara menjadwalkan ekspor data Firestore dalam mode Datastore. Untuk menjalankan ekspor sesuai jadwal, sebaiknya gunakan fungsi Cloud Run dan Cloud Scheduler. Buat Cloud Function yang memulai ekspor dan gunakan Cloud Scheduler untuk menjalankan fungsi Anda.
Sebelum memulai
Sebelum menjadwalkan ekspor data, Anda harus menyelesaikan tugas-tugas berikut:
- Mengaktifkan penagihan untuk project Google Cloud Anda. Hanya project Google Cloud dengan penagihan aktif yang dapat menggunakan fitur ekspor dan impor.
- Buat bucket Cloud Storage di lokasi dekat lokasi database mode Datastore. Operasi ekspor memerlukan bucket Cloud Storage tujuan. Anda tidak dapat menggunakan bucket Requester Pays untuk operasi ekspor.
Membuat Cloud Function dan tugas Cloud Scheduler
Ikuti langkah-langkah di bawah ini untuk membuat Cloud Function yang memulai ekspor data dan tugas Cloud Scheduler untuk memanggil fungsi tersebut:
Membuat Cloud Function datastore_export
-
Buka halaman Cloud Functions di konsol Google Cloud.
- Klik Create Function
- Masukkan nama fungsi seperti
datastoreExport
- Di bagian Pemicu, pilih Cloud Pub/Sub. Cloud Scheduler menggunakan topik pub/sub untuk memanggil fungsi Anda.
- Di kolom Topic, pilih Create a topic. Masukkan nama untuk topik pub/sub seperti
startDatastoreExport
. Catat nama topik karena Anda membutuhkannya untuk membuat tugas Cloud Scheduler. - Pada Source code, pilih Inline editor.
- Di dropdown Runtime, pilih Python 3.7.
- Masukkan kode berikut untuk
main.py
: - Di
requirements.txt
, tambahkan dependensi berikut: - Di bagian Titik entri, masukkan
datastore_export
, nama fungsi dalammain.py
. - Klik Deploy untuk men-deploy Cloud Function.
Mengonfigurasi izin akses
Selanjutnya, beri izin Cloud Function untuk memulai operasi ekspor dan menulis ke bucket Cloud Storage Anda.
Cloud Function ini menggunakan akun layanan default project Anda untuk mengautentikasi dan mengizinkan operasi ekspornya. Saat Anda membuat project, akun layanan default dibuat dengan nama berikut:
project_id@appspot.gserviceaccount.com
Akun layanan ini memerlukan izin untuk memulai operasi ekspor dan menulis ke bucket Cloud Storage Anda. Untuk memberikan izin ini, tetapkan peran IAM berikut ke akun layanan default:
Cloud Datastore Import Export Admin
- Peran
Storage Object User
di bucket
Anda dapat menggunakan Google Cloud CLI untuk menetapkan peran ini. Anda dapat mengakses alat ini dari Cloud Shell di konsol Google Cloud:
Mulai Cloud Shell
-
Tetapkan peran Cloud Datastore Import Export Admin. Ganti project_id dan jalankan perintah berikut:
gcloud projects add-iam-policy-binding project_id \ --member serviceAccount:project_id@appspot.gserviceaccount.com \ --role roles/datastore.importExportAdmin
-
Tetapkan peran Storage Object User pada bucket Anda. Ganti bucket_name dan project_id, dan jalankan perintah berikut:
gcloud storage buckets add-iam-policy-binding gs://bucket_name \ --member=serviceAccount:project_id@appspot.gserviceaccount.com \ --role=roles/storage.objectUser
Buat tugas Cloud Scheduler
Selanjutnya, buat tugas Cloud Scheduler yang memanggil Cloud Function datastore_export
:
Buka halaman Cloud Scheduler di konsol Google Cloud:
Klik Create Job.
Masukkan nama di kolom Name untuk tugas seperti
scheduledDatastoreExport
.Masukkan Frequency dalam format unix-cron.
Pilih zona waktu di Timezone.
Pada Target, pilih Pub/Sub. Di kolom Topic, masukkan nama topik pub/sub yang Anda tetapkan di samping Cloud Function,
startDatastoreExport
dalam contoh di atas.Di kolom Payload, masukkan objek JSON untuk mengonfigurasi operasi ekspor. Cloud Function
datastore_export
memerlukan nilaibucket
. Anda dapat menyertakan nilaikinds
ataunamespaceIDs
secara opsional untuk menetapkan filter entity, misalnya:Mengekspor semua entity
{ "bucket": "gs://bucket_name" }
Mengekspor dengan filter entity
Mengekspor entity jenis
User
atauTask
dari semua namespace:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"] }
Mengekspor entity jenis
User
atauTask
dari namespace default danTesters
. Gunakan string kosong (""
) untuk menentukan namespace default:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"], "namespaceIds": ["", "Testers"] }
Mengekspor entity jenis apa pun dari namespace default dan
Testers
. Gunakan string kosong (""
) untuk menentukan namespace default:{ "bucket": "gs://bucket_name", "namespaceIds": ["", "Testers"] }
Dengan
bucket_name
adalah nama bucket Cloud Storage Anda.Klik Create.
Menguji ekspor terjadwal
Untuk menguji tugas Cloud Function dan Cloud Scheduler, jalankan tugas Cloud Scheduler di halaman Cloud Scheduler di konsol Google Cloud. Jika berhasil, tindakan ini akan memulai operasi ekspor yang sebenarnya.
Buka halaman Cloud Scheduler di konsol Google Cloud.
Buka Cloud SchedulerDi baris untuk tugas Cloud Scheduler baru, klik Run now.
Setelah beberapa detik, klik Muat ulang. Tugas Cloud Scheduler akan memperbarui kolom hasil menjadi Success dan Last run menjadi waktu saat ini.
Halaman Cloud Scheduler hanya mengonfirmasi bahwa tugas tersebut mengirim pesan ke topik pub/sub. Untuk melihat apakah permintaan ekspor Anda berhasil, lihat log Cloud Function Anda.
Melihat log Cloud Function
Untuk melihat apakah Cloud Function berhasil memulai operasi ekspor, lihat halaman Logs Explorer di konsol Google Cloud.
Log untuk Cloud Function melaporkan error dan inisiasi ekspor yang berhasil.
Melihat progres ekspor
Anda dapat menggunakan perintah gcloud datastore operations list
untuk melihat
progres operasi ekspor Anda, lihat
mencantumkan semua operasi yang berjalan lama.
Setelah operasi ekspor selesai, Anda dapat melihat file output-nya di bucket Cloud Storage. Layanan ekspor terkelola menggunakan stempel waktu untuk mengatur operasi ekspor Anda: