Na tej stronie opisano, jak używać funkcji zarządzanego importu i eksportu do przenoszenia danych Cloud Firestore z jednego projektu do drugiego. Może to być 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 projektu źródłowego, a następnie zaimportować je do projektu docelowego. Przenoszenie danych między projektami obejmuje te kroki:
- Utwórz zasobnik Cloud Storage, w którym będą przechowywane dane z projektu źródłowego.
- Wyeksportuj dane z projektu źródłowego do zasobnika.
- Przyznaj projektowi docelowemu uprawnienia do odczytu z zasobnika.
- Zaimportuj dane z zasobnika do projektu docelowego.
Zanim zaczniesz
Zanim zaczniesz korzystać z zarządzanej usługi eksportu i importu, musisz wykonać te czynności:
- Włącz płatności zarówno w projekcie źródłowym, jak i docelowym. Funkcji eksportowania i importowania można używać tylko w projektach Google Cloud z włączonymi płatnościami.
-
Upewnij się, że Twoje konto ma niezbędne uprawnienia Cloud IAM w projekcie źródłowym i docelowym. Jeśli jesteś właścicielem projektu dla obu projektów, Twoje konto ma wymagane uprawnienia. W przeciwnym razie te role uprawnień Cloud IAM przyznają uprawnienia niezbędne do operacji eksportowania i importowania Cloud Firestore:
Owner,Cloud Datastore OwnerlubCloud Datastore Import Export AdminWłaściciel projektu może przyznać jedną z tych ról, wykonując czynności opisane w artykule Przyznawanie dostępu.
-
Skonfiguruj narzędzie wiersza poleceń
gcloudi połącz się z projektem na jeden z tych sposobów:-
Uzyskaj dostęp do
gcloudz konsoli Google Cloud za pomocą Cloud Shell.Sprawdź, czy narzędzie
gcloudjest skonfigurowane dla właściwego projektu:gcloud config set project [SOURCE_PROJECT_ID]
-
-
Skonfiguruj indeksy w nowym projekcie. Indeksy złożone powinny być zgodne między projektami źródłowymi i docelowymi. Indeksy należy skonfigurować najpierw, aby uniknąć wielokrotnego przetwarzania każdego dokumentu.
Eksportowanie danych z projektu źródłowego
Wyeksportuj dane, tworząc zasobnik Cloud Storage na pliki eksportu Cloud Firestore i rozpoczynając operację eksportu.
Tworzenie zasobnika Cloud Storage
Utwórz zasobnik Cloud Storage w tej samej lokalizacji co baza danych Cloud Firestore. Aby sprawdzić lokalizację bazy danych, zobacz ustawienie lokalizacji projektu. Do operacji eksportu i importu nie można używać zasobnika „płaci żądający” ani zasobnika Rapid.
Jeśli zasobnik Cloud Storage nie znajduje się w projekcie źródłowym, musisz przyznać domyślnemu kontu usługi projektu źródłowego dostęp do zasobnika. Każdy projekt Google Cloud ma automatycznie utworzone domyślne konto usługi o nazwie PROJECT_ID@appspot.gserviceaccount.com. Operacje eksportu Cloud Firestore używają tego domyślnego konta usługi do autoryzowania operacji na zasobnikach Cloud Storage. Aby przyznać domyślnemu kontu usługi dostęp do zasobnika źródłowego, przypisz mu rolę Storage Admin.
Możesz przyznać tę rolę za pomocą narzędzia gsutil dostępnego w Cloud Shell:
gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\ gs://[BUCKET_NAME]@
Możesz też przyznać tę rolę w konsoli Google Cloud.
Wyłącz operacje zapisu (opcjonalnie)
Jeśli podczas operacji eksportu aplikacja nadal zapisuje dane w bazie danych, możesz nie przechwycić wszystkich tych zapisów w plikach eksportu. Aby wyeksportować dane ze spójnego stanu, wyłącz zapisywanie w bazie danych, aktualizując reguły zabezpieczeń i zatrzymując wszystkie operacje pakietu Admin SDK.
Zaktualizuj reguły zabezpieczeń
W konsoli Firebase otwórz Bazy danych i miejsce na dane > Firestore > karta Reguły.
Zaktualizuj reguły zabezpieczeń projektu źródłowego, aby odrzucać wszystkie operacje zapisu. 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 } }Zatrzymaj zapisywanie z pakietów Admin SDK
Reguły zabezpieczeń nie blokują zapisów pochodzących z uprzywilejowanych środowisk serwerowych utworzonych za pomocą pakietu Admin SDK Firebase lub biblioteki klienta serwera Google Cloud. Pamiętaj, aby zatrzymać operacje zapisu z serwerów administracyjnych przez ich wyłączenie lub zaktualizowanie.
Rozpoczynanie operacji eksportu
Użyj polecenia gcloud firestore export, aby wyeksportować dane z projektu źródłowego. Możesz wyeksportować wszystkie dane lub tylko określone grupy kolekcji. Zastąp [SOURCE_BUCKET] nazwą zasobnika Cloud Storage:
- Eksportuj wszystkie dane
-
gcloud firestore export gs://[SOURCE_BUCKET] --async
- Eksportowanie określonych grup kolekcji
-
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] --async
Zapisz outputURIPrefix operacji eksportu, ponieważ będzie on potrzebny później. Domyślnie Cloud Firestore dodaje do eksportowanych plików prefiks na podstawie sygnatury czasowej:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
Podczas operacji eksportowania możesz użyć polecenia firestore operations list, aby wyświetlić jej postęp:
gcloud firestore operations list
Importowanie danych do projektu docelowego
Następnie przyznaj projektowi docelowemu dostęp do plików danych Cloud Firestore i rozpocznij operację importowania.
Przyznawanie dostępu do plików danych projektowi docelowemu
Zanim rozpoczniesz operację importowania, musisz upewnić się, że Twój projekt docelowy ma dostęp do plików danych Cloud Firestore.
Przenoszenie plików danych do zasobnika lokalnego
Jeśli lokalizacja zasobnika źródłowego różni się od lokalizacji Cloud Firestore projektu docelowego, musisz przenieść pliki danych do zasobnika Cloud Storage w tej samej lokalizacji co projekt docelowy.
Przenieś pliki danych do innego zasobnika Cloud Storage, wykonując czynności opisane w artykule Przenoszenie zasobników i zmienianie ich nazw.
We wszystkich kolejnych krokach używaj tego nowego zasobnika jako [SOURCE_BUCKET].
Przyznawanie kontu usługi projektu dostępu do zasobnika źródłowego
Jeśli zasobnik źródłowy nie znajduje się w projekcie docelowym, musisz przyznać domyślnemu kontu usługi projektu docelowego dostęp do zasobnika źródłowego. Domyślne konto usługi ma nazwę [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com. Aby przyznać domyślnemu kontu usługi dostęp do zasobnika źródłowego, nadaj mu odpowiednie uprawnienia dostępu do zasobnika.
Niezbędne role możesz przypisać za pomocą narzędzia gsutil dostępnego w Cloud Shell:
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \ gs://[SOURCE_BUCKET]
Możesz też przyznać tę rolę w konsoli Google Cloud.
Rozpoczynanie operacji importu
Zanim rozpoczniesz operację importowania, upewnij się, że narzędzie gcloud jest skonfigurowane dla właściwego projektu:
gcloud config set project [DESTINATION_PROJECT_ID]
Użyj polecenia gcloud firestore import, aby zaimportować dane z zasobnika źródłowego do projektu docelowego:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
[EXPORT_PREFIX] odpowiada prefiksowi w outputUriPrefix operacji eksportu. Przykład:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
Podczas operacji eksportowania możesz użyć polecenia firestore operations list, aby wyświetlić jej postęp:
gcloud firestore operations list