Verileri dışa ve içe aktarma

Verilerin yanlışlıkla silinmesini önlemek ve çevrimdışı işleme için verileri dışa aktarmak amacıyla Cloud Firestore tarafından yönetilen dışa aktarma ve içe aktarma hizmetini kullanabilirsiniz. Tüm dokümanları veya yalnızca belirli koleksiyonları dışa aktarabilirsiniz. Benzer şekilde, bir dışa aktarma işlemindeki tüm verileri veya yalnızca belirli koleksiyonları içe aktarabilirsiniz. Bir Cloud Firestore veritabanından dışa aktarılan veriler başka bir Cloud Firestore veritabanına aktarılabilir. Cloud Firestore dışa aktarma verilerini BigQuery'ye de yükleyebilirsiniz.

Bu sayfada, yönetilen dışa aktarma ve içe aktarma hizmeti ile Cloud Storage'ı kullanarak Cloud Firestore belgelerini nasıl dışa ve içe aktaracağınız açıklanmaktadır. Cloud Firestore tarafından yönetilen dışa aktarma ve içe aktarma hizmetine gcloud komut satırı aracı ve Cloud Firestore API (REST, RPC) üzerinden erişilebilir.

Başlamadan önce

Yönetilen dışa ve içe aktarma hizmetini kullanabilmek için aşağıdaki görevleri tamamlamanız gerekir:

  1. Google Cloud projeniz için faturalandırmayı etkinleştirin. Dışa ve içe aktarma işlevini yalnızca faturalandırmanın etkin olduğu Google Cloud projeleri kullanabilir.
  2. Cloud Firestore veritabanı konumunuza yakın bir konumda projeniz için Cloud Storage paketi oluşturun. Dışa ve içe aktarma işlemleri için Requester Pays paketi kullanamazsınız.
  3. Hesabınızın Cloud Firestore ve Cloud Storage için gerekli izinlere sahip olduğundan emin olun. Proje sahibiyseniz hesabınız gerekli izinlere sahiptir. Aksi takdirde, aşağıdaki roller dışa ve içe aktarma işlemleri ile Cloud Storage'a erişim için gerekli izinleri verir:

Hizmet aracısı izinleri

Dışa ve içe aktarma işlemleri, Cloud Storage işlemlerini yetkilendirmek için bir Cloud Firestore hizmet aracısı kullanır. Cloud Firestore hizmet aracısı aşağıdaki adlandırma kuralını kullanır:

Cloud Firestore hizmet aracısı
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Hizmet aracıları hakkında daha fazla bilgi edinmek için Hizmet aracıları sayfasını inceleyin.

Cloud Firestore hizmet aracısı, dışa aktarma veya içe aktarma işleminde kullanılan Cloud Storage paketine erişim gerektirir. Cloud Storage paketiniz Cloud Firestore veri tabanınızla aynı projedeyse Cloud Firestore hizmet aracısı varsayılan olarak pakete erişebilir.

Cloud Storage paketi başka bir projedeyse Cloud Firestore hizmet aracısına Cloud Storage paketine erişim izni vermeniz gerekir.

Hizmet aracısına roller atama

Aşağıdaki rollerden birini atamak için gsutil komut satırı aracını kullanabilirsiniz. Örneğin, Depolama Alanı Yöneticisi rolünü Cloud Firestore hizmet aracısına atamak için aşağıdaki komutu çalıştırın:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

PROJECT_NUMBER kısmını, Cloud Firestore hizmet aracınızı adlandırmak için kullanılan proje numaranızla değiştirin. Hizmet aracısı adını görüntülemek için Hizmet aracısı adını görüntüleme bölümüne bakın.

Alternatif olarak bu rolü GCP Console'u kullanarak da atayabilirsiniz.

Hizmet aracısı adını göster

Google Cloud Platform Console'daki İçe/Dışa Aktar sayfasından içe ve dışa aktarma işlemlerinizin istekleri yetkilendirmek için kullandığı hesabı görüntüleyebilirsiniz. Veritabanınızın Cloud Firestore hizmet aracısını mı yoksa eski App Engine hizmet hesabını mı kullandığını da görüntüleyebilirsiniz.

  1. İşleri içe/dışa aktar etiketinin yanında yetkilendirme hesabını görüntüleyin.

Dışa veya içe aktarma işleminde hizmet aracısının, Cloud Storage paketinde Storage Admin rolüne sahip olması gerekir.

Projeniz için gcloud uygulamasını kurun

İçe ve dışa aktarma işlemlerini Google Cloud Platform Console veya gcloud komut satırı aracı üzerinden başlatabilirsiniz. gcloud kullanmak için komut satırı aracını kurun ve aşağıdaki yöntemlerden birini kullanarak projenize bağlanın:

Verileri dışa aktarma

Dışa aktarma işlemi, veritabanınızdaki belgeleri Cloud Storage paketindeki bir dosya grubuna kopyalar. Dışa aktarma işleminin, dışa aktarma başlangıç zamanında alınan veritabanı anlık görüntüsünden farklı olduğunu unutmayın. Dışa aktarma işlemi, işlem çalışırken yapılan değişiklikleri içerebilir.

Tüm dokümanları dışa aktar

Google Cloud Console

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

  4. Dışa aktar'ı tıklayın.

  5. Export all database'i (Veritabanının tamamını dışa aktar) tıklayın.

  6. Hedef Seçin'in altına Cloud Storage paketinin adını girin veya paket seçmek için Göz at düğmesini kullanın.

  7. Dışa aktar'ı tıklayın.

Konsol İçe/Dışa Aktar sayfasına döner. İşlem başarıyla başlarsa sayfa, son içe ve dışa aktarma işlemleri sayfasına bir giriş ekler. Başarısızlık durumunda sayfada bir hata mesajı görüntülenir.

gcloud

Veritabanınızdaki tüm belgeleri dışa aktarmak için firestore export komutunu kullanarak [BUCKET_NAME] yerine Cloud Storage paketinizin adını yazın. gcloud aracının işlemin tamamlanmasını beklemesini önlemek için --async işaretini ekleyin.

  gcloud firestore export gs://[BUCKET_NAME] \
  --database=[DATABASE]

Aşağıdakini değiştirin:

  • BUCKET_NAME: Paket adından sonra bir dosya öneki ekleyerek dışa aktarma işlemlerinizi düzenleyin (ör. BUCKET_NAME/my-exports-folder/export-name). Dosya ön eki sağlamazsanız yönetilen dışa aktarma hizmeti, geçerli zaman damgasına göre bir dosya ön eki oluşturur.

  • DATABASE: Belgeleri dışa aktarmak istediğiniz veritabanının adı. Varsayılan veritabanı için --database='(default)' kullanın.

Bir dışa aktarma işlemi başlattığınızda terminalin kapatılması işlemi iptal etmez. İşlemi iptal etme bölümüne bakın.

Belirli koleksiyonları dışa aktarma

Google Cloud Console

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

  4. Dışa aktar'ı tıklayın.

  5. Bir veya daha fazla koleksiyon grubunu dışa aktar seçeneğini tıklayın. Bir veya daha fazla koleksiyon grubu seçmek için açılır menüyü kullanın.

  6. Hedef Seçin'in altına Cloud Storage paketinin adını girin veya paket seçmek için Göz at düğmesini kullanın.

  7. Dışa aktar'ı tıklayın.

Konsol İçe/Dışa Aktar sayfasına döner. İşlem başarıyla başlarsa sayfa, son içe ve dışa aktarma işlemleri sayfasına bir giriş ekler. Başarısızlık durumunda sayfada bir hata mesajı görüntülenir.

gcloud

Belirli koleksiyon gruplarını dışa aktarmak için --collection-ids işaretini kullanın. İşlem, yalnızca belirtilen koleksiyon kimliklerine sahip koleksiyon gruplarını dışa aktarır. Koleksiyon grubu, belirtilen koleksiyon kimliğine sahip tüm koleksiyonları ve alt koleksiyonları (herhangi bir yoldaki) içerir.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
--database=[DATABASE]

Örneğin, foo veritabanında ratings, reviews veya outlets gibi birden çok alt koleksiyon içerecek şekilde bir restaurants koleksiyonu tasarlayabilirsiniz. Belirli bir restaurants ve reviews koleksiyonunu dışa aktarmak için komutunuz aşağıdaki gibi görünür:

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=restaurants,reviews \
--database='cymbal'

PITR zaman damgasından dışa aktarma

gcloud firestore export komutunu kullanarak veritabanınızı PITR verilerinden Cloud Storage'a aktarabilirsiniz. Zaman damgasının son yedi gün içinde tam dakikalık bir zaman damgası olduğu ancak earliestVersionTime değerinden önce olmadığı durumlarda PITR verilerini dışa aktarabilirsiniz. Belirtilen zaman damgasında veriler artık mevcut değilse dışa aktarma işlemi başarısız olur.

PITR dışa aktarma işlemi, tüm dokümanları dışa aktarma ve belirli koleksiyonları dışa aktarma da dahil olmak üzere tüm filtreleri destekler.

  1. snapshot-time parametresini istenen kurtarma zaman damgasına göre belirterek veritabanını dışa aktarın.

    gcloud

    Veritabanını paketinize aktarmak için aşağıdaki komutu çalıştırın.

    gcloud firestore export gs://[BUCKET_NAME_PATH] \
        --snapshot-time=[PITR_TIMESTAMP] \
        --collection-ids=[COLLECTION_IDS] \
        --namespace-ids=[NAMESPACE_IDS]
    

    Nerede,

    • PITR_TIMESTAMP - dakika ayrıntı düzeyinde bir PITR zaman damgası (örneğin, 2023-05-26T10:20:00.00Z).

    PITR verilerini dışa aktarmadan önce aşağıdaki noktaları göz önünde bulundurun:

    • Zaman damgasını RFC 3339 biçiminde belirtin. Örneğin, 2020-09-01T23:59:30.234233Z.
    • Belirttiğiniz zaman damgasının son yedi gün içindeki tam dakikalık bir zaman damgası olduğundan, ancak earliestVersionTime tarihinden önce olmadığından emin olun. Veriler belirtilen zaman damgasında artık mevcut değilse bir hata oluşur.
    • Başarısız PITR dışa aktarma işlemi için sizden ücret alınmaz.

Verileri içe aktarma

Dosyaları Cloud Storage'a aktardıktan sonra bu dosyalardaki dokümanları projenize veya başka bir projeye aktarabilirsiniz. İçe aktarma işlemleriyle ilgili aşağıdaki noktalara dikkat edin:

  • Verileri içe aktardığınızda gerekli dizinler, veritabanınızın mevcut dizin tanımları kullanılarak güncellenir. Dışa aktarma işlemi dizin tanımları içermez.

  • İçe aktarma işlemlerinde yeni doküman kimlikleri atanmaz. İçe aktarma işlemlerinde, dışa aktarma sırasında yakalanan kimlikler kullanılır. Bir belge içe aktarılırken, kimlik çakışmalarını önlemek için kimliği ayrılır. Aynı kimliğe sahip bir doküman zaten varsa içe aktarma işlemi, mevcut dokümanın üzerine yazar.

  • Veritabanınızdaki bir doküman, içe aktarma işleminden etkilenmiyorsa içe aktarma işleminden sonra veritabanınızda kalır.

  • İçe aktarma işlemleri Cloud Functions'ı tetiklemez. Anlık görüntü dinleyicileri, içe aktarma işlemleriyle ilgili güncellemeleri alır.

  • .overall_export_metadata dosya adı, üst klasörünün adıyla eşleşmelidir:

    gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadata

    Bir dışa aktarma işleminin çıkış dosyalarını taşır veya kopyalarsanız PARENT_FOLDER_NAME ve .overall_export_metadata dosya adlarını aynı tutun.

Dışa aktarmadaki tüm dokümanları içe aktarma

Google Cloud Console

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

  4. İçe aktar'ı tıklayın.

  5. Dosya adı alanına, tamamlanan bir dışa aktarma işlemindeki .overall_export_metadata dosyasının dosya adını girin. Dosyayı seçmenize yardımcı olması için Göz at düğmesini kullanabilirsiniz.

  6. İçe aktar'ı tıklayın.

Konsol İçe/Dışa Aktar sayfasına döner. İşlem başarıyla başlarsa sayfa, son içe ve dışa aktarma işlemleri sayfasına bir giriş ekler. Başarısızlık durumunda sayfada bir hata mesajı görüntülenir.

gcloud

Önceki dışa aktarma işlemindeki dokümanları içe aktarmak için firestore import komutunu kullanın.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]

Aşağıdakini değiştirin:

  • BUCKET_NAME/EXPORT_PREFIX: Dışa aktarma dosyalarınızın konumu.

  • DATABASE: Veritabanının adı. Varsayılan veritabanı için --database='(default)' kullanın.

Örnek:

gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'

Google Cloud Platform Console'daki Cloud Storage tarayıcısında dışa aktarma dosyalarınızın konumunu onaylayabilirsiniz:

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

Bir içe aktarma işlemi başlattığınızda terminalin kapatılması işlemi iptal etmez. İşlemi iptal etme bölümünü inceleyin.

Belirli koleksiyonları içe aktarma

Google Cloud Console

Konsolda belirli koleksiyonları seçemezsiniz. Bunun yerine gcloud politikasını kullanın.

gcloud

Bir dışa aktarma dosyası grubundan belirli koleksiyon gruplarını içe aktarmak için --collection-ids işaretini kullanın. İşlem, yalnızca belirtilen koleksiyon kimliklerine sahip koleksiyon gruplarını içe aktarır. Koleksiyon grubu, belirtilen koleksiyon kimliğine sahip tüm koleksiyonları ve alt koleksiyonları (herhangi bir yoldaki) içerir. --database işaretini kullanarak veritabanı adını belirtin. Varsayılan veritabanı için --database='(default)' kullanın.

Yalnızca belirli koleksiyon gruplarının dışa aktarılması, belirli koleksiyon gruplarının içe aktarılmasını destekler. Tüm belgelerin dışa aktarımından belirli koleksiyonları içe aktaramazsınız.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --database=[DATABASE]

PITR dışa aktarma işlemini içe aktarma

Dışa aktarılan veritabanınızı içe aktarmak için Tüm dokümanları içe aktar bölümündeki adımları uygulayın. Veritabanınızda mevcut bir belge varsa bu belgenin üzerine yazılır.

Dışa ve içe aktarma işlemlerini yönetme

Bir dışa veya içe aktarma işlemi başlattıktan sonra, Cloud Firestore işleme benzersiz bir ad atar. İşlemi silmek, iptal etmek veya durum kontrolü yapmak için işlem adını kullanabilirsiniz.

İşlem adlarının başında projects/[PROJECT_ID]/databases/(default)/operations/ bulunur. Örneğin:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Ancak describe, cancel ve deletekomutları

Tüm dışa ve içe aktarma işlemlerini listeleme

Google Cloud Console

Son dışa ve içe aktarma işlemlerinin listesini Google Cloud Platform Console'un İçe/Dışa Aktar sayfasında görebilirsiniz.

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

gcloud

Devam eden ve yakın zamanda tamamlanmış tüm dışa aktarma ve içe aktarma işlemlerini görmek için operations list komutunu kullanın:

gcloud firestore operations list

İşlem durumunu kontrol et

Google Cloud Console

Son yaptığınız dışa veya içe aktarma işleminin durumunu Google Cloud Platform Console'un İçe/Dışa Aktar sayfasında görebilirsiniz.

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

gcloud

Dışa veya içe aktarma işleminin durumunu göstermek için operations describe komutunu kullanın.

gcloud firestore operations describe [OPERATION_NAME]

Tamamlanma süresini tahmin etme

Uzun süreli bir işlemin durumuyla ilgili yapılan istek, workEstimated ve workCompleted metriklerini döndürür. Bu metriklerin her biri hem bayt sayısı hem de varlık sayısı olarak döndürülür:

  • workEstimated, bir işlemin işleyeceği tahmini toplam bayt ve belge sayısını gösterir. Cloud Firestore, tahminde bulunamıyorsa bu metriği atlanabilir.

  • workCompleted, o ana kadar işlenen bayt ve doküman sayısını gösterir. İşlem tamamlandıktan sonra bu değer, gerçekten işlenen bayt ve doküman sayısını gösterir. Bu sayı, workEstimated değerinden daha büyük olabilir.

İlerleme tahmini için workCompleted değerini workEstimated değerine bölün. Bu tahmin, gecikmeli istatistiklerin toplanmasına bağlı olduğu için yanlış olabilir.

İşlemi iptal etme

Google Cloud Console

Devam eden bir dışa aktarma veya içe aktarma işlemini, Google Cloud Platform Console'un İçe/Dışa Aktar sayfasından iptal edebilirsiniz.

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

Son içe aktarma ve dışa aktarma işlemleri tablosundaki şu anda çalışan işlemler, Tamamlananlar sütununda bir İptal düğmesi içerir. İşlemi durdurmak için İptal düğmesini tıklayın. İşlem tamamen durduğunda düğme önce İptal ediliyor, ardından İptal edildi olarak değişir.

gcloud

Devam eden bir işlemi durdurmak için operations cancel komutunu kullanın:

gcloud firestore operations cancel [OPERATION_NAME]

Çalışmakta olan bir işlemin iptal edilmesi, işlemin geri alınmasına neden olmaz. İptal edilen bir dışa aktarma işlemi, daha önce dışa aktarılmış belgeleri Cloud Storage'a bırakır. İptal edilen bir içe aktarma işlemi, veritabanınızda önceden yapılmış güncellemeleri olduğu gibi bırakır. Kısmen tamamlanmış bir dışa aktarma işlemini içe aktaramazsınız.

İşlemi silme

Bir işlemi son işlemler listesinden kaldırmak için gcloud firestore operations delete komutunu kullanın. Bu komut, dışa aktarma dosyalarını Cloud Storage'dan silmez.

gcloud firestore operations delete [OPERATION_NAME]

İhracat ve ithalat işlemleri için faturalandırma ve fiyatlandırma

Yönetilen dışa ve içe aktarma hizmetini kullanmadan önce Google Cloud projeniz için faturalandırmayı etkinleştirmeniz gerekir.

Belge okuma ve yazma işlemleri için dışa ve içe aktarma işlemleri, Cloud Firestore fiyatlandırmasında belirtilen fiyatlar üzerinden ücretlendirilir. Dışa aktarma işlemleri, dışa aktarılan her belge için bir okuma işlemi gerçekleştirir. İçe aktarma işlemleri, içe aktarılan belge başına bir yazma işlemi gerçekleştirir.

Cloud Storage'da depolanan çıkış dosyaları, Cloud Storage veri depolama maliyetlerinize dahil edilir.

Dışa ve içe aktarma işlemlerinin maliyeti, harcama sınırınıza dahil edilmez. Dışa aktarma veya içe aktarma işlemleri, işlem tamamlanana kadar Google Cloud bütçe uyarılarınızı tetiklemez. Benzer şekilde, bir dışa veya içe aktarma işlemi sırasında gerçekleştirilen okuma ve yazmalar, işlem tamamlandıktan sonra günlük kotanıza uygulanır. Dışa ve içe aktarma işlemleri, konsolun kullanım bölümünde gösterilen kullanımı etkilemez.

İhracat ve ithalat maliyetlerini görüntüleme

Dışa aktarma ve içe aktarma işlemleri, faturalandırılan işlemlere goog-firestoremanaged:exportimport etiketini uygular. Cloud Faturalandırma raporları sayfasında bu etiketi kullanarak içe ve dışa aktarma işlemleriyle ilgili maliyetleri görüntüleyebilirsiniz:

Filtreler menüsünden goog-firestoremanaged etiketine erişin.

BigQuery'ye aktarma

Yalnızca collection-ids filtresi belirttiyseniz Cloud Firestore dışa aktarma işleminden BigQuery'ye veri yükleyebilirsiniz. Cloud Firestore dışa aktarmalarından veri yükleme bölümüne bakın.

BigQuery sütun sınırı

BigQuery,tablo başına 10.000 sütun sınırı uygular. Cloud Firestore dışa aktarma işlemleri, her koleksiyon grubu için bir BigQuery tablo şeması oluşturur. Bu şemada, bir koleksiyon grubundaki her benzersiz alan adı bir şema sütunu haline gelir.

Bir koleksiyon grubunun BigQuery şeması 10.000 sütunu aşarsa Cloud Firestore dışa aktarma işlemi, eşleme alanlarını bayt olarak değerlendirerek sütun sınırının altında kalmaya çalışır. Bu dönüştürme işlemi, sütun sayısını 10.000'in altına getirirse verileri BigQuery'ye yükleyebilirsiniz ancak eşleme alanlarındaki alt alanları sorgulayamazsınız. Sütun sayısı hâlâ 10.000'i aşıyorsa dışa aktarma işlemi, koleksiyon grubu için bir BigQuery şeması oluşturmaz ve bu gruptaki verileri BigQuery'ye yükleyemezsiniz.

Biçim ve meta veri dosyalarını dışa aktarma

Yönetilen dışa aktarma işleminin çıkışı, LevelDB günlük biçimini kullanır.

Meta veri dosyaları

Dışa aktarma işlemi, belirttiğiniz her koleksiyon grubu için bir meta veri dosyası oluşturur. Meta veri dosyaları genellikle ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata olarak adlandırılır.

Meta veri dosyaları protokol arabellekleridir ve protoc protokol derleyici ile bu dosyaların kodunu çözebilirsiniz. Örneğin, dışa aktarma dosyalarının içerdiği koleksiyon gruplarını belirlemek için bir meta veri dosyasının kodunu çözebilirsiniz:

protoc --decode_raw < export0.export_metadata

Hizmet aracısı taşıma

Cloud Firestore, içe ve dışa aktarma işlemlerini yetkilendirmek için App Engine hizmet hesabını kullanmak yerine bir Cloud Firestore hizmet aracısı kullanır. Hizmet aracısı ve hizmet hesabı aşağıdaki adlandırma kurallarını kullanır:

Cloud Firestore hizmet aracısı
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Cloud Firestore, önceden Cloud Firestore hizmet aracısı yerine App Engine varsayılan hizmet hesabını kullanıyordu. Veritabanınız verileri içe veya dışa aktarmak için hâlâ App Engine hizmet hesabını kullanıyorsa Cloud Firestore hizmet aracısına geçiş yapmak için bu bölümdeki talimatları uygulamanızı öneririz.

App Engine hizmet hesabı
PROJECT_ID@appspot.gserviceaccount.com

Cloud Firestore'a özgü olduğu için Cloud Firestore hizmet aracısı tercih edilir. App Engine hizmet hesabı birden fazla hizmet tarafından paylaşılır.

Yetkilendirme hesabını görüntüle

İçe ve dışa aktarma işlemlerinizin, istekleri yetkilendirmek için hangi hesabı kullandığını Google Cloud Platform Console'daki İçe/Dışa Aktar sayfasından görüntüleyebilirsiniz. Veritabanınızın zaten Cloud Firestore hizmet aracısını kullanıp kullanmadığını da görebilirsiniz.

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.
  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

  4. İşleri içe/dışa aktar etiketinin yanında yetkilendirme hesabını görüntüleyin.

Projeniz Cloud Firestore hizmet aracısını kullanmıyorsa aşağıdaki tekniklerden birini kullanarak Cloud Firestore hizmet aracısına geçebilirsiniz:

Bu tekniklerin ilki, etki kapsamını tek bir Cloud Firestore projesine göre yerelleştirmesi nedeniyle tercih edilir. İkinci teknik, mevcut Cloud Storage paket izinlerini taşımadığı için tercih edilmez. Bununla birlikte, kuruluş düzeyinde güvenlik uygunluğu sunar.

Cloud Storage paket izinlerini kontrol edip güncelleyerek taşıyın

Taşıma işlemi iki adımdan oluşur:

  1. Cloud Storage paket izinlerini güncelleyin. Ayrıntılar için aşağıdaki bölüme bakın.
  2. Cloud Firestore hizmet aracısına taşıma işlemini onaylayın.

Hizmet aracısı paket izinleri

Başka bir projede Cloud Storage paketi kullanan tüm dışa aktarma veya içe aktarma işlemlerinde, ilgili paket için Cloud Firestore hizmet aracısı izinlerini vermeniz gerekir. Örneğin, verileri başka bir projeye taşıyan işlemlerin, o projedeki bir pakete erişmesi gerekir. Aksi takdirde, Cloud Firestore hizmet aracısına geçiş yaptıktan sonra bu işlemler başarısız olur.

Aynı proje içinde kalan içe ve dışa aktarma iş akışları, izinlerde değişiklik gerektirmez. Cloud Firestore hizmet aracısı aynı projedeki paketlere varsayılan olarak erişebilir.

service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com hizmet aracısına erişim vermek için diğer projelerin Cloud Storage paketleri izinlerini güncelleyin. Hizmet aracısına Firestore Service Agent rolü verin.

Firestore Service Agent rolü, Cloud Storage paketi için okuma ve yazma izinleri verir. Yalnızca okuma veya yalnızca yazma izni vermeniz gerekiyorsa özel rol kullanın.

Aşağıdaki bölümde açıklanan taşıma işlemi, izin güncellemeleri gerektirebilecek Cloud Storage paketlerini belirlemenize yardımcı olur.

Projeleri Firestore Hizmet Aracısı'na taşıma

App Engine hizmet hesabından Cloud Firestore hizmet aracısına geçiş yapmak için aşağıdaki adımları uygulayın. Taşıma işlemi tamamlandıktan sonra geri alınamaz.

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.
  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

  4. Projeniz henüz Cloud Firestore hizmet aracısına taşınmadıysa taşıma işlemini açıklayan bir banner ve Paket Durumunu Kontrol Et düğmesi gösterilir. Bir sonraki adım, olası izin hatalarını belirleyip düzeltmenize yardımcı olur.

    Paket Durumunu Kontrol Et'i tıklayın.

    Taşıma işleminizi tamamlama seçeneğini ve Cloud Storage paketlerinin listesini içeren bir menü görüntülenir. Listenin yüklenmesi birkaç dakika sürebilir.

    Bu liste, son zamanlarda içe ve dışa aktarma işlemlerinde kullanılan ancak Cloud Firestore hizmet aracısına okuma ve yazma izinleri vermeyen paketleri içerir.

  5. Projenizin Cloud Firestore hizmet aracısının ana adını not edin. Hizmet aracısı adı, Erişim izni verilecek hizmet aracısı etiketinin altında görünür.
  6. Gelecekteki içe veya dışa aktarma işlemlerinde kullanacağınız listedeki herhangi bir paket için aşağıdaki adımları tamamlayın:

    1. Bu paketin tablo satırında Düzelt'i tıklayın. Bu işlem, paketin izinler sayfasını yeni bir sekmede açar.

    2. Ekle'yi tıklayın.
    3. New principals (Yeni ana hesaplar) alanına, Cloud Firestore hizmet aracınızın adını girin.
    4. Rol seçin alanında Hizmet Aracıları > Firestore Hizmet Aracısı seçeneğini belirleyin.
    5. Kaydet'i tıklayın.
    6. Cloud Firestore İçe/Dışa Aktar sayfasının bulunduğu sekmeye dönün.
    7. Listedeki diğer paketler için bu adımları tekrarlayın. Listenin tüm sayfalarını görüntülediğinizden emin olun.
  7. Firestore Hizmet Aracısı'na taşı'yı tıklayın. İzin kontrolleri başarısız olan paketleriniz varsa Taşı'yı tıklayarak taşıma işleminizi onaylamanız gerekir.

    Taşıma işleminiz tamamlandığında bir uyarı alırsınız. Taşıma işlemi geri alınamaz.

Taşıma durumunu görüntüleme

Projenizin taşıma durumunu doğrulamak için:

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.
  3. Gezinme menüsünde İçe/Dışa Aktar'ı tıklayın.

  4. İşleri şu şekilde çalışır: İçe/Dışa aktar etiketinin yanındaki ana hesabı bulun.

    Ana hesap service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com ise projeniz zaten Cloud Firestore hizmet aracısına taşınmıştır. Taşıma işlemi geri alınamaz.

    Proje taşınmadıysa sayfanın üst kısmında Paket Durumunu Kontrol Et düğmesini içeren bir banner gösterilir. Taşıma işlemini tamamlamak için Firestore hizmet aracısına taşıma bölümüne bakın.

Kuruluş genelinde bir politika kısıtlaması ekleyin

  • Kuruluşunuzun politikasında aşağıdaki kısıtlamayı ayarlayın:

    İçe/dışa aktarma için Firestore Hizmet Aracısı'nı zorunlu kıl (firestore.requireP4SAforImportExport).

    Bu kısıtlama, istekleri yetkilendirmek amacıyla Cloud Firestore hizmet aracısını kullanmak için içe ve dışa aktarma işlemleri gerektirir. Bu kısıtlamayı ayarlamak için Kuruluş politikaları oluşturma ve yönetme bölümüne bakın.

Bu kuruluş politikası kısıtlaması uygulandığında Cloud Firestore hizmet aracısı için uygun Cloud Storage paket izinleri otomatik olarak verilmez.

Kısıtlama, herhangi bir içe veya dışa aktarma iş akışı için izin hataları oluşturuyorsa bunu devre dışı bırakarak varsayılan hizmet hesabını kullanmaya geri dönebilirsiniz. Cloud Storage paket izinlerini kontrol edip güncelledikten sonra kısıtlamayı tekrar etkinleştirebilirsiniz.