Halaman ini menjelaskan cara menjadwalkan ekspor Firestore Anda dalam data mode Datastore. Untuk menjalankan ekspor berjadwal, sebaiknya gunakan Cloud Functions 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 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 Anda. Operasi ekspor memerlukan bucket Cloud Storage tujuan. Anda tidak dapat menggunakan bucket Requester Pays untuk operasi ekspor.
Membuat tugas Cloud Scheduler dan Cloud Function
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.
- Pada kolom Topik, pilih Buat topik. Masukkan nama untuk topik pub/sub seperti
startDatastoreExport
. Catat nama topik karena Anda memerlukannya 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
, nama fungsi dimain.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
Owner
atauStorage Admin
di bucket
Anda dapat menggunakan alat command line gcloud
dan gsutil
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 Admin pada bucket Anda. Ganti project_id dan bucket_name, dan jalankan perintah berikut:
gsutil iam ch serviceAccount:project_id@appspot.gserviceaccount.com:admin \ gs://bucket_name
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. Pada kolom Topik, masukkan nama topik pub/sub yang Anda tetapkan di Cloud Function,
startDatastoreExport
dalam contoh di atas.Di kolom Payload, masukkan objek JSON untuk mengonfigurasi operasi ekspor. Cloud Function
datastore_export
memerlukan nilaibucket
. Secara opsional, Anda dapat menyertakan nilaikinds
ataunamespaceIDs
untuk menetapkan filter entity, misalnya:Mengekspor semua entity
{ "bucket": "gs://bucket_name" }
Mengekspor dengan filter entity
Ekspor entity jenis
User
atauTask
dari semua namespace:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"] }
Ekspor entity jenis
User
atauTask
dari namespace default danTesters
. Gunakan string kosong (""
) untuk menentukan namespace default:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"], "namespaceIds": ["", "Testers"] }
Ekspor entity 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 Cloud Function dan tugas Cloud Scheduler, jalankan tugas Cloud Scheduler Anda di halaman Cloud Scheduler di Google Cloud Console. Jika berhasil, operasi ekspor yang sebenarnya akan dimulai.
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 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. Lihat mencantumkan semua operasi yang berjalan lama.
Setelah operasi ekspor selesai, Anda dapat melihat file output di bucket Cloud Storage. Layanan ekspor terkelola menggunakan stempel waktu untuk mengatur operasi ekspor: