Na tej stronie dowiesz się, jak korzystać z funkcji zarządzanego importu i eksportu, 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 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 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. Tylko projekty Google Cloud z włączonymi płatnościami mogą korzystać z funkcji eksportowania i importowania.
-
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 wykonywania operacji Cloud Firestore eksportu i importu:
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 artykule Udzielanie dostępu.
-
Skonfiguruj narzędzie wiersza poleceń
gcloud
i połącz się z projektem na jeden z tych sposobów:-
Uzyskaj dostęp do
gcloud
z konsoli Google Cloud za pomocą polecenia Cloud Shell.Sprawdź, czy
gcloud
jest skonfigurowany na potrzeby 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ć w pierwszej kolejności, aby uniknąć wielokrotnego przetwarzania każdego dokumentu.
Eksportowanie danych z projektu źródłowego
Wyeksportuj dane, tworząc Cloud Storagezasobnik na pliki eksportuCloud Firestore i rozpoczynając operację eksportowania.
Utwórz zasobnik Cloud Storage
Utwórz Cloud Storagezasobnik w tej samej lokalizacji co Cloud Firestorebaza danych. Aby wyświetlić lokalizację bazy danych, sprawdź ustawienia lokalizacji projektu. Nie możesz używać zasobnika „Płatnik żąda” do operacji eksportu i importu.
Jeśli zasobnik Cloud Storage nie znajduje się wprojekcie źródłowym, musisz przyznać domyślnemu kontu usługi projektu źródłowego dostęp do zasobnika. Każdy Google CloudprojektGoogle 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 operacji na Cloud Storage
zasobniku. 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ą gsutil
narzędzia 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 Google Cloudkonsoli.
Wyłącz operacje zapisu (opcjonalnie)
Jeśli aplikacja nadal zapisuje dane w bazie danych podczas eksportowania, w plikach eksportu mogą nie zostać uwzględnione wszystkie te zapisy. Aby wyeksportować dane w spójnym stanie, wyłącz zapisywanie w bazie danych, aktualizując reguły zabezpieczeń i wstrzymując wszelkie operacje pakietu Admin SDK.
Zaktualizuj reguły zabezpieczeń
Na karcie Cloud Firestore Reguły w konsoli 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 } }
Wstrzymywanie zapisów z pakietów Admin SDK
Reguły zabezpieczeń nie blokują zapisów pochodzących z uprzywilejowanych środowisk serwerowych utworzonych za pomocą pakietu Firebase Admin SDK lub biblioteki klienta serwera Google Cloud. Zatrzymaj operacje zapisu z serwerów administracyjnych, wyłączając lub aktualizując serwery.
Rozpoczynanie eksportowania
Użyj polecenia gcloud firestore export
, aby wyeksportować dane z projektu źródłowego. 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 outputURIPrefix
operacji eksportowania, 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 eksportowania 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 docelowemu projektowi dostęp do plików danych Cloud Firestore i rozpocznij operację importowania.
Udzielanie dostępu do plików danych w projekcie docelowym
Zanim rozpoczniesz operację importowania, musisz się upewnić, że projekt docelowy ma dostęp do Cloud Firestoreplików danych.
Przenoszenie plików danych do lokalnego zasobnika
Jeśli lokalizacja zasobnika źródłowego jest inna niż lokalizacja projektu docelowegoCloud Firestore, musisz przenieść pliki danych do zasobnikaCloud Storage w tej samej lokalizacji co projekt docelowy.
Przenieś pliki danych do innego Cloud Storage zasobnika, wykonując czynności opisane w sekcji Przenoszenie i zmiana nazwy zasobników.
We wszystkich kolejnych krokach używaj tego nowego zasobnika jako [SOURCE_BUCKET]
.
Przyznaj kontu usługi projektu dostęp 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, przyznaj mu odpowiednie uprawnienia dostępu do zasobnika.
Możesz przyznać niezbędne role 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]
Tę rolę możesz też przyznać w Google Cloudkonsoli.
Rozpoczynanie operacji importu
Zanim rozpoczniesz importowanie, sprawdź, czy gcloud
jest skonfigurowany w odpowiednim projekcie:
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 operacji eksportowaniaoutputUriPrefix
. Przykład:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
Podczas wykonywania operacji eksportowania możesz użyć polecenia firestore operations list
, aby wyświetlić postęp operacji:
gcloud firestore operations list