Na tej stronie dowiesz się, jak używać funkcji importowania i eksportowania zarządzanych, aby przenosić dane 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 eksportować dane z projektu źródłowego, a potem importować je do projektu docelowego. Przenoszenie danych między projektami obejmuje te kroki:
- Utwórz zasobnik Cloud Storage, aby przechowywać 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 usługi zarządzanego eksportu i importu, musisz wykonać te czynności:
- Włącz płatności zarówno w projekcie źródłowym, jak i w projekcie docelowym. Funkcji eksportowania i importowania mogą używać tylko projekty Google Cloud z włączonymi płatnościami.
-
Upewnij się, że Twoje konto ma wymagane 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 operacji eksportu i importu Cloud Firestore:
Owner
,Cloud Datastore Owner
lubCloud Datastore Import Export Admin
Właściciel projektu może przyznać jedną z tych ról, wykonując czynności opisane w sekcji Udzielanie dostępu.
-
Skonfiguruj narzędzie wiersza poleceń
gcloud
i połącz się z projektem w jeden z tych sposobów:-
Uzyskaj dostęp do
gcloud
w konsoli Google Cloud, używając Cloud Shell.Upewnij się, że
gcloud
jest skonfigurowany na potrzeby odpowiedniego 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. Najpierw należy skonfigurować indeksy, aby uniknąć przetwarzania każdego dokumentu kilka razy.
Eksportowanie danych z projektu źródłowego
Wyeksportuj dane, tworząc zasobnik Cloud Storage dla plików eksportu Cloud Firestore i uruchamiając operację eksportu.
Utwórz zasobnik Cloud Storage
Utwórz zasobnik Cloud Storage w tej samej lokalizacji co baza danych Cloud Firestore. Aby sprawdzić lokalizację bazy danych, sprawdź ustawienia lokalizacji projektu. Nie możesz używać puli taryfy prośby o eksport i import.
Jeśli zasobnik Cloud Storage nie znajduje się w projekcie źródłowym, musisz przyznać do niego dostęp domyślnemu kontu usługi tego projektu. Każdy projekt Google Cloud ma automatycznie utworzone domyślne konto usługi o nazwie PROJECT_ID@appspot.gserviceaccount.com
. Operacje eksportu Cloud Firestorekorzystają z domyślnego konta usługi do autoryzacji operacji na Cloud Storagebucketach. Aby przyznać domyślnemu kontu usługi dostęp do zasobnika źródłowego, przypisz do niego 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ż przypisać tę rolę w konsoli Google Cloud.
Wyłącz operacje zapisu (opcjonalnie)
Jeśli podczas eksportowania aplikacja nadal zapisuje dane w bazie danych, w plikach eksportu może nie być widoczne całe ich zapisywanie. Aby wyeksportować dane z konsekwentnego stanu, wyłącz zapisywanie w bazie danych, aktualizując reguły zabezpieczeń i zatrzymając wszystkie operacje pakietu Admin SDK.
Aktualizowanie reguł zabezpieczeń
Na konsoli Cloud Firestorena karcie Reguły zaktualizuj reguły zabezpieczeń projektu źródłowego, aby zablokować 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 } }
Zatrzymanie zapisu z pakietów Admin SDK
Reguły bezpieczeństwa nie blokują operacji zapisu pochodzących z uprzywilejowanych środowisk serwera utworzonych za pomocą pakietu Firebase Admin SDK lub Google Cloud Client Library. Zatrzymaj operacje zapisu na serwerach administracyjnych, wyłączając je lub aktualizując.
Rozpoczynanie operacji eksportowania
Aby wyeksportować dane z projektu źródłowego, użyj polecenia gcloud firestore export
. Możesz wyeksportować wszystkie dane lub tylko określone kolekcje. Zastąp [SOURCE_BUCKET]
nazwą zasobnika Cloud Storage:
- Eksportowanie wszystkich danych
-
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
Zapisz identyfikator outputURIPrefix
operacji eksportu, ponieważ będzie on potrzebny później. Domyślnie Cloud Firestore dodaje do wyeksportowanych plików 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ć jej postęp:
gcloud firestore operations list
Importowanie danych do projektu docelowego
Następnie przyznaj docelowemu projektowi dostęp do plików danych Cloud Firestore i rozpocznij operację importowania.
Przyznawanie projektowi docelowemu dostępu do plików danych
Zanim rozpoczniesz importowanie, musisz się upewnić, że 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 i zmienianie nazwy zasobników.
W kolejnych krokach użyj tego nowego zasobu jako [SOURCE_BUCKET]
.
Przyznaj kontu usługi projektu dostęp do zasobnika źródłowego
Jeśli źródłowy zasobnik nie znajduje się w docelowym projekcie, musisz przyznać domyślnemu kontu usługi docelowego projektu dostęp do źródłowego zasobnika. 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, przyznaj mu odpowiednie uprawnienia.
Wymagane role możesz przyznać 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ż przypisać tę rolę w konsoli Google Cloud.
Rozpoczynanie operacji importu
Zanim rozpoczniesz importowanie, upewnij się, że gcloud
jest skonfigurowany w odpowiednim projekcie:
gcloud config set project [DESTINATION_PROJECT_ID]
Aby zaimportować dane z zasośnika źródłowego do projektu docelowego, użyj polecenia gcloud firestore import
:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
Gdzie [EXPORT_PREFIX]
pasuje do prefiksu operacji eksportu outputUriPrefix
. 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ć jej postęp:
gcloud firestore operations list