Bu sayfada, verilerinizin dışa aktarılmasını nasıl planlayacağınız açıklanmaktadır. Cloud Firestore verileri. Dışa aktarma işlemlerini belirli bir plana göre gerçekleştirmek için Cloud Functions ve Cloud Scheduler kullanılıyor.
Başlamadan önce
Yönetilen veri dışa aktarma işlemlerini planlamadan önce aşağıdaki görevleri tamamlamanız gerekir:
- Etkinleştir Google Cloud projeniz için faturalandırma. Yalnızca Google Cloud faturalandırmanın etkin olduğu projelerde dışa ve içe aktarma özellikleri kullanılabilir.
- Dışa aktarma işlemleri bir hedef Cloud Storage paketi gerektirir. Cloud Firestore veritabanı konumunuza yakın bir konumda Cloud Storage paketi oluşturun. Dışa aktarma işlemleri için istek sahibinin ödediği bir paket kullanamazsınız.
Cloud Functions işlevi ve Cloud Scheduler işi oluşturun
Aşağıdaki adımları uygulayarak Cloud Firestore veri dışa aktarma ve Cloud Scheduler işi başlatır işlevini çağırmak için:
Firebase CLI
-
Firebase CLI'ı yükleyin. Yeni bir dizinde CLI'ı şunun için başlatın: Cloud Functions:
firebase init functions --project PROJECT_ID
- Dil için JavaScript'i seçin.
- İsteğe bağlı olarak, ESLint'i etkinleştirin.
- Bağımlılıkları yüklemek için
y
girin.
-
functions/index.js
dosyasındaki kodu şununla değiştirin: takip etmek için:const functions = require('firebase-functions'); const firestore = require('@google-cloud/firestore'); const client = new firestore.v1.FirestoreAdminClient(); // Replace BUCKET_NAME const bucket = 'gs://BUCKET_NAME'; exports.scheduledFirestoreExport = functions.pubsub .schedule('every 24 hours') .onRun((context) => { const projectId = process.env.GCP_PROJECT; const databaseName = client.databasePath(projectId, '(default)'); return client.exportDocuments({ name: databaseName, outputUriPrefix: bucket, // Leave collectionIds empty to export all collections // or set to a list of collection IDs to export, // collectionIds: ['users', 'posts'] collectionIds: [] }) .then(responses => { const response = responses[0]; console.log(`Operation Name: ${response['name']}`); }) .catch(err => { console.error(err); throw new Error('Export operation failed'); }); });
-
Yukarıdaki kodda aşağıdaki değişiklikleri yapın:
BUCKET_NAME
yerine paket.- Dışa aktarma planınızı ayarlamak için
every 24 hours
dosyasını değiştirin. Şunlardan birini kullanın: AppEngine cron.yaml söz dizimi veya unix-cron biçimi (* * * * *
) hakkında daha fazla bilgi edinin. -
Yalnızca belirtilen verileri dışa aktarmak için
collectionIds: []
dosyasını değiştirin koleksiyon grupları. Tüm koleksiyonları dışa aktarmak için olduğu gibi bırakın.
-
Planlanmış işlevi dağıtın:
firebase deploy --only functions
Google Cloud Console
Bir Cloud İşlevi oluşturun
-
Google Cloud Console'daki Cloud Functions sayfasına gidin:
- İşlev Oluştur'u tıklayın.
firestoreExport
gibi bir işlev adı girin- Tetikleyici bölümünde Cloud Pub/Sub'ı seçin.
- Konu bölümünde Yeni konu oluştur'u seçin. Pub/Sub konusu için
initiateFirestoreExport
gibi bir ad girin. Cloud Scheduler işinizi oluşturmak için ihtiyaç duyacağınız konu adını not edin. - Kaynak kod bölümünde Satır içi düzenleyici'yi seçin. Şunu girin:
index.js
altındaki şu kodu kullanabilirsiniz: Yukarıdaki kodda aşağıdakileri değiştirin:const firestore = require('@google-cloud/firestore'); const client = new firestore.v1.FirestoreAdminClient(); // Replace BUCKET_NAME const bucket = 'gs://BUCKET_NAME' exports.scheduledFirestoreExport = (event, context) => { const databaseName = client.databasePath( process.env.GCP_PROJECT, '(default)' ); return client .exportDocuments({ name: databaseName, outputUriPrefix: bucket, // Leave collectionIds empty to export all collections // or define a list of collection IDs: // collectionIds: ['users', 'posts'] collectionIds: [], }) .then(responses => { const response = responses[0]; console.log(`Operation Name: ${response['name']}`); return response; }) .catch(err => { console.error(err); }); };
BUCKET_NAME
yerine paket.-
Yalnızca belirtilen verileri dışa aktarmak için
collectionIds: []
dosyasını değiştirin koleksiyon grupları. Tüm koleksiyonları dışa aktarmak için olduğu gibi bırakın.
package.json
altında aşağıdaki bağımlılığı ekleyin:{ "dependencies": { "@google-cloud/firestore": "^1.3.0" } }
- Yürütülecek işlev alanına
scheduledFirestoreExport
değerini,index.js
işlevindeki işlevin adı. - Cloud Functions işlevini dağıtmak için Create'i (Oluştur) tıklayın.
Cloud Scheduler işi oluştur
Ardından, Cloud Functions işlevinizi çağıran bir Cloud Scheduler işi oluşturun:
-
Google Cloud Console'da Cloud Scheduler sayfasına gidin:
- İş Oluştur'u tıklayın.
- İş için
scheduledFirestoreExport
gibi bir Ad girin. - Sıklık girin (ör.
every 24 hours
). - Saat dilimi seçin.
- Hedef altında Pub/Sub'ı seçin. Konu alanında,
web sitenizin yanında tanımladığınız pub/sub konusunun
Cloud Functions işlevi, örnekte
initiateFirestoreExport
bölümünü ziyaret edin. - Yük alanına
start export
yazın. İş, tanımlanmış bir yük gerektiriyor ancak yukarıdaki Cloud Functions işlevi kullanmayabilir. değer. - Oluştur'u tıklayın.
Erişim izinlerini yapılandırma
Ardından, Cloud Functions işlevine dışa aktarmayı başlatma izni verin işlemlerinizin yanı sıra GCS paketinize yazma olanağı da sağlar.
Bu Cloud Functions işlevi, projenizin varsayılan hizmet hesabını kullanarak kimlik doğrulaması yapmak ve dışa aktarma işlemlerini yetkilendirmek. Bir proje oluşturduğunuzda sizin için şu adla varsayılan hizmet hesabı oluşturulur:
PROJECT_ID@appspot.gserviceaccount.com
Bu hizmet hesabının dışa aktarma işlemi başlatmak için izne ihtiyacı var işlemi yapmak ve Cloud Storage paketinize yazmak için gereklidir. Bu izinleri vermek için varsayılan hizmet hesabına aşağıdaki IAM rollerini atayın:
Cloud Datastore Import Export Admin
-
Pakette
Owner
veyaStorage Admin
rolü
Bu rolleri atamak için gcloud
ve gsutil
komut satırı araçlarını kullanabilirsiniz.
Yüklü değilse bunlara erişebilirsiniz:
Google Cloud Console'da Cloud Shell araçlarını kullanabilirsiniz:
Cloud Shell sayfasını başlat
-
Cloud Datastore İçe Aktarma Dışa Aktarma Yöneticisi rolünü atayın. PROJECT_ID yerine aşağıdaki komutu çalıştırın:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_ID@appspot.gserviceaccount.com \ --role roles/datastore.importExportAdmin
-
Paketinize Depolama Alanı Yöneticisi rolünü atayın. Değiştir PROJECT_ID ve BUCKET_NAME çalıştırıp aşağıdaki komutu çalıştırın komut:
gsutil iam ch serviceAccount:PROJECT_ID@appspot.gserviceaccount.com:admin \ gs://BUCKET_NAME
App Engine varsayılan hizmet hesabınızı devre dışı bırakırsanız veya silerseniz App Engine uygulamanız Cloud Firestore veritabanınıza erişimi kaybeder. App Engine hizmet hesabınızı devre dışı bıraktıysanız yeniden etkinleştirebilirsiniz. Hizmet hesabını etkinleştirme başlıklı makaleyi inceleyin. App Engine hizmet hesabınızı son 30 gün içinde sildiyseniz hizmet hesabınızı geri yükleyebilirsiniz. bir hizmet hesabını silme işlemini geri alma.
Cloud Scheduler işinizi ve Cloud Functions işlevinizi test edin
Cloud Scheduler işinizi şuranın Cloud Scheduler sayfasında test edebilirsiniz: Google Cloud konsolunu kullanın.
Google Cloud Console'da Cloud Scheduler sayfasına gidin.
Cloud Scheduler adresine gidinYeni Cloud Scheduler işinizin satırında Şimdi çalıştır'ı tıklayın.
Cloud Scheduler işi birkaç saniye sonra sonucu güncelleyecektir sütununda Başarılı ve Son çalıştırma'yı geçerli zamana ayarlayın. Şunlara ihtiyacınız olabilir: Yenile'yi tıklayın.
Cloud Scheduler sayfası yalnızca işin Cloud Functions'ınızı çağırdığını onaylar. İşlevinizin günlüklerini görmek için Cloud Functions işlevi sayfasını açın.
Cloud Functions işlevi günlüklerini görüntüleme
Cloud Functions işlevinin dışa aktarma işlemini başarıyla başlatıp başlatmadığını öğrenmek için: fonksiyonun günlüklerini açın:
Firebase Konsolu
Firebase konsolunda Cloud Functions sayfasına gidin.
GCP Console
Google Cloud Console'da Cloud Functions sayfasına gidin.
Dışa aktarma işleminin ilerleme durumunu görüntüleme
Dışa aktarma işlemlerinizin ilerleme durumunu görüntülemek için gcloud firestore operations list
komutunu kullanabilirsiniz. Dışa aktarma ve içe aktarma işlemlerini yönetme başlıklı makaleyi inceleyin.
Bir dışa aktarma işlemi tamamlandıktan sonra çıkış dosyalarını Cloud Storage paket:
Cloud Storage tarayıcısını açın