Bu sayfada Cloud Firestore verilerini bir projeden diğerine taşımak için yönetilen içe ve dışa aktarma özelliklerinin nasıl kullanılacağı açıklanmaktadır. Bu, bir geliştirme ortamı oluşturmak veya bir uygulamayı kalıcı olarak başka bir projeye taşımanın bir parçası olarak yararlı olabilir. Bu sayfadaki örnekte, bir kaynak projeden verilerin nasıl dışarı aktarılacağı ve ardından bu verilerin bir hedef projeye nasıl aktarılacağı gösterilmektedir. Verileri projeler arasında taşımak aşağıdaki adımları içerir:
- Kaynak projenizdeki verileri tutmak için bir Cloud Storage paketi oluşturun.
- Verileri kaynak projenizden pakete aktarın.
- Hedef projenize paketten okuma izni verin.
- Paketteki verileri hedef projenize aktarın.
Sen başlamadan önce
Yönetilen dışa ve içe aktarma hizmetini kullanabilmeniz için aşağıdaki görevleri tamamlamanız gerekir:
- Hem kaynak projeniz hem de hedef projeniz için faturalandırmayı etkinleştirin. Dışa aktarma ve içe aktarma işlevini yalnızca faturalandırmanın etkin olduğu Google Cloud projeleri kullanabilir.
Kaynak projenizde ve hedef projenizde hesabınızın gerekli Cloud IAM izinlerine sahip olduğundan emin olun. Her iki projenin de proje sahibiyseniz hesabınız gerekli izinlere sahiptir. Aksi takdirde aşağıdaki Cloud IAM rolleri, Cloud Firestore dışa ve içe aktarma işlemleri için gerekli izinleri verir:
Owner
,Cloud Datastore Owner
veyaCloud Datastore Import Export Admin
Bir proje sahibi, Erişim verme bölümündeki adımları izleyerek bu rollerden birini verebilir.
gcloud
komut satırı aracını kurun ve projenize aşağıdaki yollardan biriyle bağlanın:Cloud Shell'i kullanarak Google Cloud konsolundan
gcloud
erişin.gcloud
doğru proje için yapılandırıldığından emin olun:gcloud config set project [SOURCE_PROJECT_ID]
Yeni projenizde dizinleri ayarlayın. Bileşik dizinler kaynak ve hedef projeler arasında eşleşmelidir. Her belgeyi birden çok kez işlemek zorunda kalmamak için öncelikle dizinler ayarlanmalıdır.
Kaynak projeden verileri dışarı aktarın
Cloud Firestore dışa aktarma dosyalarınız için bir Cloud Storage paketi oluşturarak ve bir dışa aktarma işlemi başlatarak verilerinizi dışa aktarın.
Cloud Storage paketi oluşturma
Cloud Firestore veritabanınızla aynı konumda bir Cloud Storage paketi oluşturun . Veritabanı konumunuzu görüntülemek için proje konum ayarınıza bakın. İhracat ve ithalat işlemleri için Talep Eden Ödemeler grubunu kullanamazsınız.
Cloud Storage paketiniz kaynak projenizde değilse kaynak projenin varsayılan hizmet hesabına pakete erişim izni vermeniz gerekir. Her Google Cloud projesinin PROJECT_ID @appspot.gserviceaccount.com
adında otomatik olarak oluşturulmuş bir varsayılan hizmet hesabı vardır. Cloud Firestore dışa aktarma işlemleri, Cloud Storage paket işlemlerini yetkilendirmek için bu varsayılan hizmet hesabını kullanır. Kaynak grubunuza varsayılan hizmet hesabı erişimi vermek için ona Storage Admin
rolünü verin.
Bu rolü Cloud Shell'de bulunan gsutil
aracıyla verebilirsiniz:
gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\ gs://[BUCKET_NAME]@
Bu rolü Google Cloud konsolunda da verebilirsiniz .
Yazma işlemlerini devre dışı bırakın (isteğe bağlı)
Siz bir dışarı aktarma işlemi gerçekleştirirken uygulamanız veritabanınıza yazmaya devam ederse, bu yazma işlemlerinin tümünü dışarı aktarma dosyalarınızda yakalayamayabilirsiniz. Verileri tutarlı bir durumdan dışarı aktarmak için güvenlik kurallarınızı güncelleyerek ve tüm Yönetici SDK işlemlerini durdurarak veritabanınıza yazmayı devre dışı bırakın.
Güvenlik kurallarını güncelleyin
Konsolun Cloud Firestore Kuralları sekmesinde , tüm yazma işlemlerini reddetmek için kaynak proje güvenlik kurallarınızı güncelleyin. Örneğin:
// Deny write access to all users under any conditions service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow write: if false; } // Reads do not affect export operations // Add your read rules here } }
Yönetici SDK'larından yazmayı durdurma
Güvenlik kuralları , Firebase Yönetici SDK'sı veya Google Cloud Sunucu İstemci Kitaplığı kullanılarak oluşturulan ayrıcalıklı sunucu ortamlarından gelen yazma işlemlerini durdurmaz. Sunucularınızı kapatarak veya güncelleyerek yönetici sunucularınızdan yazma işlemlerini durdurduğunuzdan emin olun.
Dışa aktarma işlemine başlayın
Kaynak projenizdeki verileri dışa aktarmak için gcloud firestore export
komutunu kullanın. Tüm verilerinizi veya yalnızca belirli koleksiyonlarınızı dışa aktarabilirsiniz. [SOURCE_BUCKET]
kısmını Cloud Storage paketinizin adıyla değiştirin:
- Tüm verileri dışa aktar
gcloud firestore export gs://[SOURCE_BUCKET] --async
- Belirli koleksiyonları dışa aktar
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async
Daha sonra kullanacağınız için dışa aktarma işleminizin outputURIPrefix
not edin. Varsayılan olarak Cloud Firestore, dışa aktarma dosyalarınıza zaman damgasına dayalı bir ön düzeltme ekler:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
Dışa aktarma işlemi çalışırken, işleminizin ilerleyişini görüntülemek için firestore operations list
komutunu kullanabilirsiniz:
gcloud firestore operations list
Verileri hedef projeye aktarın
Ardından hedef projenin Cloud Firestore veri dosyalarınıza erişmesine izin verin ve bir içe aktarma işlemi başlatın.
Hedef projenin veri dosyalarınıza erişmesine izin verin
Bir içe aktarma işlemine başlamadan önce hedef projenizin Cloud Firestore veri dosyalarınıza erişebildiğinden emin olmalısınız.
Veri dosyalarını yerel bir pakete taşıyın
Kaynak paket konumunuz hedef projenizin Cloud Firestore konumundan farklıysa veri dosyalarınızı hedef projenizle aynı konumdaki Cloud Storage paketine taşımanız gerekir.
Paketleri Taşıma ve Yeniden Adlandırma bölümündeki adımları izleyerek veri dosyalarınızı başka bir Cloud Storage paketine taşıyın. Aşağıdaki adımların tümü için bu yeni paketi [SOURCE_BUCKET]
olarak kullanın.
Proje hizmeti hesabının kaynak paketinize erişmesine izin verin
Kaynak paketiniz hedef projenizde değilse hedef projenin varsayılan hizmet hesabına kaynak paketinize erişim izni vermeniz gerekir. Varsayılan hizmet hesabının adı [DESTINATION_PROJECT_ID] @appspot.gserviceaccount.com
. Varsayılan hizmet hesabına kaynak paketinize erişim izni vermek için, pakete erişmesi için uygun izinleri verin.
Cloud Shell'de bulunan gsutil
aracıyla gerekli rolleri verebilirsiniz:
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \ gs://[SOURCE_BUCKET]
Bu rolü Google Cloud konsolunda da verebilirsiniz .
Bir içe aktarma işlemi başlatma
İçe aktarma işlemine başlamadan önce gcloud
doğru proje için yapılandırıldığından emin olun:
gcloud config set project [DESTINATION_PROJECT_ID]
Kaynak paketinizdeki verileri hedef projenize aktarmak için gcloud firestore import
komutunu kullanın:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
Burada [EXPORT_PREFIX]
dışa aktarma işleminizin outputUriPrefix
önekle eşleşir. Örneğin:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
Dışa aktarma işlemi çalışırken, işleminizin ilerleyişini görüntülemek için firestore operations list
komutunu kullanabilirsiniz:
gcloud firestore operations list