Na tej stronie dowiesz się, jak używać zarządzanych funkcji 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 czynności:
- 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
Aby 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. Tylko Google Cloud projekty z włączonymi płatnościami mogą korzystać z funkcji eksportu i importu.
-
Sprawdź, czy Twoje konto ma niezbędne uprawnienia Cloud IAM w projekcie źródłowym i docelowym. Jeśli jesteś właścicielem obu projektów, Twoje konto ma wymagane uprawnienia. W przeciwnym razie te role Cloud IAM przyznają niezbędne uprawnienia do Cloud Firestore operacji eksportu i importu:
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 w jeden z tych sposobów:-
Uzyskaj dostęp do
gcloudz konsoli Google Cloud za pomocą Cloud Shell.Sprawdź, czy
gcloudjest skonfigurowany dla właściwego projektu:gcloud config set project [SOURCE_PROJECT_ID]
-
-
Skonfiguruj indeksy w nowym projekcie. Indeksy złożone powinny być takie same w projektach źródłowym i docelowym. Indeksy należy skonfigurować jako pierwsze , aby uniknąć wielokrotnego przetwarzania każdego dokumentu.
Eksportowanie danych z projektu źródłowego
Wyeksportuj dane, tworząc zasobnik Cloud Storage na pliki Cloud Firestore eksportu i rozpoczynając operację eksportu.
Tworzenie zasobnika Cloud Storage
Utwórz Cloud Storage zasobnik w tej samej lokalizacji co Twoja Cloud Firestore baza danych. Aby wyświetlić lokalizację bazy danych, sprawdź ustawienie lokalizacji projektu. W przypadku operacji eksportu i importu nie można używać zasobnika Requester Pays 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 Google Cloud projekt
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 autoryzowania Cloud Storage
operacji w zasobniku. Aby przyznać
domyślnemu kontu usługi dostęp do zasobnika źródłowego, przypisz do niego
Storage Admin
rolę.
Tę rolę możesz przyznać 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]@
Tę rolę możesz też przyznać w konsoli Google Cloud.
Wyłączanie operacji zapisu (opcjonalnie)
Jeśli aplikacja nadal zapisuje dane w bazie danych podczas wykonywania operacji eksportu, możesz nie uwzględnić wszystkich tych zapisów w plikach eksportu. Aby wyeksportować dane w spójnym stanie, wyłącz zapisy w bazie danych, aktualizując reguły zabezpieczeń i wstrzymując wszystkie operacje pakietu Admin SDK.
Aktualizowanie reguł zabezpieczeń
W konsoli Firebase otwórz kartę Bazy danych i pamięć masowa > Firestore > Reguły.
Zaktualizuj reguły zabezpieczeń projektu źródłowego, aby odrzucać wszystkie zapisy. 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 } }Wstrzymywanie zapisów z pakietów Admin SDK
Reguły zabezpieczeń nie zatrzymują zapisów pochodzących z uprzywilejowanych środowisk serwerowych utworzonych za pomocą pakietu Firebase Admin SDK lub biblioteki klienta serwera Google Cloud Library. Pamiętaj, aby wstrzymać operacje zapisu z serwerów administracyjnych, wyłączając lub aktualizując serwery.
Rozpoczynanie operacji eksportu
Aby wyeksportować dane z projektu źródłowego, użyj polecenia gcloud firestore export. Możesz wyeksportować wszystkie dane lub tylko określone grupy kolekcji. Zastąp [SOURCE_BUCKET] nazwą swojego
Cloud Storage zasobnika:
- Eksportowanie wszystkich danych
-
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
Zanotuj outputURIPrefix operacji eksportu, ponieważ będzie on potrzebny później. Domyślnie Cloud Firestore dodaje do plików eksportu
prefiks na podstawie sygnatury czasowej:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
Podczas wykonywania operacji eksportu możesz użyć polecenia firestore operations list, aby wyświetlić postęp operacji:
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ę importu.
Przyznawanie projektowi docelowemu dostępu do plików danych
Zanim rozpoczniesz operację importu, musisz się upewnić, że 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 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 i zmienianie nazw zasobników.
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, przypisz do niego odpowiednie uprawnienia dostępu do zasobnika.
Niezbędne role możesz przyznać za pomocą
gsutil narzędzia
dostępnego w Cloud Shell:
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \ gs://[SOURCE_BUCKET]
Tę rolę możesz też przyznać w konsoli Google Cloud.
Rozpoczynanie operacji importu
Zanim rozpoczniesz operację importu, sprawdź, czy gcloud jest skonfigurowany dla właściwego projektu:
gcloud config set project [DESTINATION_PROJECT_ID]
Aby zaimportować dane z zasobnika źródłowego do projektu docelowego, użyj polecenia gcloud firestore import:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
Gdzie [EXPORT_PREFIX] odpowiada prefiksowi w outputUriPrefix operacji eksportu. Przykład:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
Podczas wykonywania operacji eksportu możesz użyć polecenia firestore operations list, aby wyświetlić postęp operacji:
gcloud firestore operations list