Przenoszenie danych między projektami

Na tej stronie dowiesz się, jak korzystać z funkcji zarządzanego importowania i eksportowania na potrzeby przeniesienia danych Cloud Firestore z innego projektu. Jest to przydatne podczas konfigurowania środowiska programistycznego lub w ramach trwałej migracji aplikacji do innego projektu. Przykład na tej stronie pokazuje, jak wyeksportować dane z w projekcie źródłowym, a następnie zaimportujesz te dane do projektu docelowego. Przenoszę dane między projektami należy wykonać te czynności:

  1. Utwórz zasobnik Cloud Storage, w którym będą przechowywane dane z projektu źródłowego.
  2. Wyeksportuj dane z projektu źródłowego do zasobnika.
  3. Przyznaj projektowi docelowemu uprawnienia do odczytu z zasobnika.
  4. Zaimportuj dane z zasobnika do projektu docelowego.

Zanim zaczniesz

Aby móc korzystać z usługi zarządzanego eksportu i importu, musisz wykonać następujące zadania:

  1. Włącz płatności za projekt źródłowy oraz w projekcie docelowym. Tylko Google Cloud w projektach z włączonymi płatnościami można używać funkcji eksportowania i importowania.
  2. Sprawdź, czy Twoje konto ma wymaganą licencję Cloud IAM uprawnień w projekcie źródłowym, w projekcie docelowym. Jeśli jesteś właścicielem obu projektów, Twoje konto ma wymagane uprawnień. W przeciwnym razie te role Cloud IAM przyznać Cloud Firestore niezbędne uprawnienia operacji eksportu i importu:

    Owner, Cloud Datastore Owner lub Cloud Datastore Import Export Admin

    Właściciel projektu może przypisać jedną z tych ról, postępując zgodnie z kroki Przyznaj dostęp.

  3. Skonfiguruj narzędzie wiersza poleceń gcloud i połącz się z projektem na jeden z tych sposobów:

  4. Skonfiguruj indeksy w nowym projekcie. Indeksy złożone powinny pasować między projektem źródłowym a docelowym. Należy skonfigurować indeksy , aby uniknąć konieczności wielokrotnego przetwarzania każdego dokumentu.

Eksportuj dane z projektu źródłowego

Utwórz zasobnik Cloud Storage, aby wyeksportować swoje dane Eksport plików Cloud Firestore i rozpoczynanie operacji eksportu.

Tworzenie zasobnika Cloud Storage

Utwórz Zasobnik Cloud Storage w tej samej lokalizacji co Cloud Firestore w bazie danych. Aby wyświetlić lokalizację bazy danych, zobacz ustawienia lokalizacji projektu. Nie możesz używać zasobnika Żądający płaci na potrzeby operacji eksportu i importu.

Jeśli zasobnika Cloud Storage nie ma w projektu źródłowego, musisz podać dostępu domyślnego konta usługi do zasobnika. Każdy projekt Google Cloud ma automatycznie utworzone domyślne konto usługi o nazwie PROJECT_ID@appspot.gserviceaccount.com. Cloud Firestore operacje eksportu używają tego domyślnego konta usługi do autoryzacji Cloud Storage operacji zasobnika. Aby użyć funkcji domyślnemu kontu usługi dostęp do zasobnika źródłowego, przyznaj mu Storage Admin rolę użytkownika.

Możesz przypisać tę rolę użytkownikom Narzędzie gsutil dostępne w Cloud Shell:

Uruchamianie Cloud Shell

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

Możesz też przypisać tę rolę w konsoli Google Cloud.

Wyłącz operacje zapisu (opcjonalnie)

Jeśli podczas eksportowania aplikacja nadal zapisuje dane w bazie danych może nie udać się zapisać wszystkich tych zapisów w plikach eksportu. Do eksportuj dane ze stałego stanu, wyłącz zapisy do bazy danych przez aktualizację reguły zabezpieczeń i wstrzymanie operacji związanych z pakietem Admin SDK.

  1. Aktualizowanie reguł zabezpieczeń

    W Cloud Firestore Karta Reguły w konsoli, zaktualizuj reguły zabezpieczeń projektu źródłowego, aby odrzucać wszystkie pisze. Przykład:

      // 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
        }
      }
    
  2. Blokuj zapisy z pakietów Admin SDK

    Reguły zabezpieczeń nie zatrzymują zapisów pochodzących z serwera z podwyższonymi uprawnieniami środowisk utworzonych za pomocą administratora Firebase. Pakiet SDK lub Google Cloud Klient serwera Biblioteka. Zatrzymaj operacje zapisu na serwerach administracyjnych do wyłączenie lub zaktualizowanie serwerów.

Rozpoczynanie operacji eksportu

Do eksportowania użyj polecenia gcloud firestore export z projektu źródłowego. Możesz wyeksportować wszystkie dane lub tylko określonych kolekcji. Zastąp [SOURCE_BUCKET] nazwą swojego Zasobnik Cloud Storage:

Eksportuj wszystkie dane
gcloud firestore export gs://[SOURCE_BUCKET] --async
Eksportowanie określonych kolekcji
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async

Zanotuj parametr outputURIPrefix operacji eksportu, ponieważ będziesz go używać o tym później. Domyślnie Cloud Firestore dodaje do eksportu prefiks według sygnatury czasowej:

outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418

Podczas eksportowania możesz użyć polecenia firestore operations list aby sprawdzić postęp operacji:

gcloud firestore operations list

Importowanie danych do projektu docelowego

Następnie przyznaj projektowi docelowemu dostęp do Twojego plików danych Cloud Firestore i rozpocznij operację importu.

Przyznaj projektowi docelowemu dostęp do plików danych

Przed rozpoczęciem operacji importowania musisz sprawdź, czy projekt docelowy ma dostęp do Cloud Firestore plików danych.

Przenoszenie plików danych do zasobnika lokalnego

Jeśli lokalizacja zasobnika źródłowego różni się od lokalizacji Lokalizacja w Cloud Firestore projektu docelowego; musisz przenieść plików danych do zasobnika Cloud Storage w tym samym jako projekt docelowy.

Aby przenieść pliki danych do innego zasobnika Cloud Storage, wykonaj te czynności w artykule Przenoszenie zasobników i zmienianie ich nazw. W przypadku wszystkich poniższych kroków używaj tego nowego zasobnika jako [SOURCE_BUCKET].

Przyznaj kontu usługi projektu dostęp do zasobnika źródłowego

Jeśli w projekcie docelowym nie ma zasobnika źródłowego, musisz nadać domyślne konto usługi projektu docelowego do zasobnika źródłowego. domyślne konto usługi ma nazwę [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com Do przyznaj domyślnemu kontu usługi dostęp do zasobnika źródłowego, przyznaj mu odpowiednich uprawnień dostępu do zasobnika.

Niezbędne role możesz przypisać Narzędzie gsutil dostępne w Cloud Shell:

Uruchamianie Cloud Shell

gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \
gs://[SOURCE_BUCKET]

Możesz też przypisać tę rolę w konsoli Google Cloud.

Rozpoczynanie operacji importu

Przed rozpoczęciem operacji importowania upewnij się, że usługa gcloud jest skonfigurowana dla odpowiedniego projektu:

gcloud config set project [DESTINATION_PROJECT_ID]

Aby zaimportować dane do usługi, użyj polecenia gcloud firestore import zasobnik źródłowy do projektu docelowego:

gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async

Gdzie [EXPORT_PREFIX] pasuje do prefiksu w operacji eksportu outputUriPrefix Przykład:

gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async

Podczas eksportowania możesz użyć polecenia firestore operations list aby sprawdzić postęp operacji:

gcloud firestore operations list