Halaman ini menjelaskan cara menjadwalkan ekspor data Firestore dalam mode Datastore. Untuk menjalankan ekspor berjadwal, 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:
- Aktifkan 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 Anda 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 Entry point, masukkan
datastore_export
, yaitu 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
pada 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 Frekuensi 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
untuk menetapkan filter entitas, misalnya:Mengekspor semua entity
{ "bucket": "gs://bucket_name" }
Mengekspor dengan filter entitas
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 dari 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 Buat.
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 yang dikelola menggunakan stempel waktu untuk mengatur operasi ekspor Anda: