Veri dışa aktarma işlemlerini planlayın

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ır.

Başlamadan önce

Yönetilen veri dışa aktarma işlemlerini planlamadan önce aşağıdaki görevleri tamamlamanız gerekir:

  1. Etkinleştir faturalandırması gerekecektir. Yalnızca Google Cloud faturalandırmanın etkin olduğu projelerde dışa ve içe aktarma özellikleri kullanılabilir.
  2. Dışa aktarma işlemleri bir hedef Cloud Storage paketi gerektirir. Oluştur bir Cloud Storage paketine yakın bir konumda Cloud Firestore'unuz hakkında daha fazla bilgi edinin. Dışa aktarma için Requester Pays paketi kullanamazsınız operations.

Cloud Functions işlevi ve Cloud Scheduler işi oluşturma

Aşağıdaki adımları uygulayarak Cloud Firestore veri dışa aktarma ve Cloud Scheduler işi başlatır işlevini çağırın:

Firebase CLI
  1. Firebase CLI'ı yükleyin. Yeni bir dizinde CLI'ı şunun için başlatın: Cloud Functions:

    firebase init functions --project PROJECT_ID
    1. Dil için JavaScript'i seçin.
    2. İsteğe bağlı olarak ESLint'i etkinleştirin.
    3. Bağımlılıkları yüklemek için y girin.
  2. 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');
      });
    });
  3. 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.

  4. Planlanmış işlevi dağıtın:

    firebase deploy --only functions
GCP Console
Bir Cloud İşlevi oluşturun
  1. GCP Console'daki Cloud Functions sayfasına gidin:

    Cloud Functions'a git

  2. İşlev Oluştur'u tıklayın.
  3. firestoreExport gibi bir işlev adı girin
  4. Tetikleyici bölümünde Cloud Pub/Sub'ı seçin.
  5. Konu'nun altında Yeni konu oluştur'u seçin. Şunun için bir ad girin: pub/sub konusu, örneğin initiateFirestoreExport. Konu adını Cloud Scheduler işinizi oluşturmak için gereklidir.
  6. Kaynak kodu bölümünde Satır içi düzenleyici'yi seçin. Şunu girin: index.js altındaki şu kodu kullanabilirsiniz:
    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);
        });
    };
    Yukarıdaki kodda aşağıdaki değişiklikleri yapın:
    • 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.

  7. package.json altında, aşağıdaki bağımlılığı ekleyin:
    {
      "dependencies": {
        "@google-cloud/firestore": "^1.3.0"
      }
    }
  8. Yürütülecek işlev alanına scheduledFirestoreExport değerini, index.js işlevindeki işlevin adı.
  9. Cloud Functions işlevini dağıtmak için Create'i (Oluştur) tıklayın.
Cloud Scheduler işi oluşturma

Ardından, Cloud Functions işlevinize çağrı yapan bir Cloud Scheduler işi oluşturun:

  1. GCP Console'daki Cloud Scheduler sayfasına gidin:

    Cloud Scheduler'a gidin

  2. İş Oluştur'u tıklayın.
  3. İş için scheduledFirestoreExport gibi bir Ad girin.
  4. Sıklık değeri girin (ör. every 24 hours).
  5. Saat dilimi seçin.
  6. 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.
  7. Yük alanına start export yazın. İş, tanımlanmış bir yük gerektiriyor ancak yukarıdaki Cloud Functions işlevi kullanmayabilir. değer.
  8. Oluştur'u tıklayın.
Bu noktada Cloud Functions işlevinizi ve Cloud Scheduler'ı dağıttınız ancak Cloud Functions işlevinizin yürütülebilmesi için erişim izinlerine ihtiyacı vardır dışa aktarma işlemleri.

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 Cloud Storage paketinize yazmayı unutmayın. Bu izinleri vermek için izin varsa aşağıdaki IAM rollerini varsayılan hizmet hesabına atayın:

  • Cloud Datastore Import Export Admin.
  • Pakette Owner veya Storage Admin rolü

gcloud ve gsutil komut satırını kullanabilirsiniz çeşitli araçlardan destek alabilirsiniz.

Yüklü değilse bunlara erişebilirsiniz: Cloud Shell'deki araçlardan birini kullanın:
Cloud Shell'i başlatın

  1. Cloud Datastore İçe Aktarma Dışa Aktarma Yöneticisi rolünü atayın. Değiştir PROJECT_ID'ı tıklayın ve 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
    

  2. 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ır veya silerseniz App Engine uygulaması, Cloud Firestore veritabanınıza erişimini kaybeder. App Engine hizmet hesabınızı devre dışı bıraktıysanız yeniden etkinleştirebilirsiniz. hizmet hesabını etkinleştirme bölümünü 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 etme

Cloud Scheduler işinizi şuranın Cloud Scheduler sayfasında test edebilirsiniz: Google Cloud Platform Console'da görüntüleyebilirsiniz.

  1. GCP Console'daki Cloud Scheduler sayfasına gidin.
    . Cloud Scheduler'a gidin

  2. Yeni Cloud Scheduler işinizin satırında Run now'ı (Şimdi çalıştır) tıklayın.

    Cloud Scheduler işi, birkaç saniye sonra sonucu günceller. 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 Cloud Functions işlevi görür. İş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.

İşlev Günlükleri'ne git

GCP Console

GCP Console'da Cloud Functions sayfasına gidin.

Günlük Görüntüleyici'ye git

Dışa aktarma işleminin ilerleme durumunu görüntüleme

Şunu görüntülemek için gcloud firestore operations list komutunu kullanabilirsiniz: ilerleme durumunu görmek için bkz. dışa aktarma ve içe aktarma işlemlerini yönetme.

Bir dışa aktarma işlemi tamamlandıktan sonra çıkış dosyalarını Cloud Storage paketi:

Cloud Storage tarayıcısını açın