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 przy konfigurowaniu ś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 pomiędzy projektami obejmuje następujące kroki:
- Utwórz zasobnik Cloud Storage do przechowywania danych z projektu źródłowego.
- Wyeksportuj dane z projektu źródłowego do zasobnika.
- Daj projektowi docelowemu uprawnienia do odczytu z zasobnika.
- Zaimportuj dane z zasobnika do projektu docelowego.
Zanim zaczniesz
Zanim będzie można skorzystać z usługi zarządzanego eksportu i importu, należy wykonać następujące zadania:
- Włącz rozliczenia zarówno dla projektu źródłowego, jak i docelowego. Tylko projekty Google Cloud z włączonymi rozliczeniami mogą korzystać z funkcji eksportu i importu.
Upewnij się, że 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 następujące 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 Przyznawanie dostępu .
Skonfiguruj narzędzie wiersza poleceń
gcloud
i połącz się ze swoim projektem na jeden z następujących sposobów:Uzyskaj dostęp do
gcloud
z konsoli Google Cloud przy użyciu Cloud Shell .Upewnij się, że
gcloud
jest skonfigurowany dla prawidłowego projektu:gcloud config set project [SOURCE_PROJECT_ID]
Skonfiguruj indeksy w swoim nowym projekcie. Indeksy złożone powinny pasować do projektu źródłowego i docelowego. Aby uniknąć konieczności wielokrotnego przetwarzania każdego dokumentu, należy najpierw skonfigurować indeksy.
Eksportuj dane z projektu źródłowego
Eksportuj swoje dane, tworząc zasobnik Cloud Storage na pliki eksportu Cloud Firestore i rozpoczynając operację eksportu.
Utwórz zasobnik Cloud Storage
Utwórz wiadro Cloud Storage w tej samej lokalizacji, w której znajduje się baza danych Cloud Firestore. Aby wyświetlić lokalizację bazy danych, zobacz ustawienie lokalizacji projektu . Nie możesz używać segmentu Requester Pays do operacji eksportu i importu.
Jeśli Twojego zasobnika Cloud Storage nie ma 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 wykorzystują to domyślne konto usługi do autoryzacji operacji segmentu Cloud Storage. Aby przyznać domyślnemu kontu usługi dostęp do zasobnika źródłowego, przyznaj mu rolę Storage Admin
.
Możesz nadać 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 także przyznać tę rolę w konsoli Google Cloud .
Wyłącz operacje zapisu (opcjonalnie)
Jeśli aplikacja będzie nadal zapisywać w bazie danych podczas wykonywania operacji eksportu, możesz nie przechwycić wszystkich tych zapisów w plikach eksportu. Aby wyeksportować dane ze spójnego stanu, wyłącz zapis w bazie danych, aktualizując reguły bezpieczeństwa i zatrzymując wszelkie operacje Admin SDK.
Zaktualizuj zasady bezpieczeństwa
Na karcie Reguły Cloud Firestore w konsoli zaktualizuj reguły bezpieczeństwa projektu źródłowego, aby blokować wszelkie zapisy. Na 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 } }
Halt zapisuje z pakietów Admin SDK
Reguły bezpieczeństwa nie powstrzymują zapisów pochodzących z uprzywilejowanych środowisk serwerowych utworzonych przy użyciu pakietu Firebase Admin SDK lub biblioteki klienta Google Cloud Server . Pamiętaj, aby zatrzymać operacje zapisu na serwerach administracyjnych, wyłączając lub aktualizując serwery.
Rozpocznij operację eksportu
Użyj polecenia gcloud firestore export
aby wyeksportować dane z projektu źródłowego. Możesz wyeksportować wszystkie swoje dane lub tylko wybrane zbiory. Zastąp [SOURCE_BUCKET]
nazwą swojego segmentu Cloud Storage:
- Eksportuj wszystkie dane
gcloud firestore export gs://[SOURCE_BUCKET] --async
- Eksportuj określone kolekcje
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async
Zanotuj outputURIPrefix
operacji eksportu, ponieważ będziesz go później używać. Domyślnie Cloud Firestore dodaje prefiks do plików eksportu na podstawie sygnatury czasowej:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
W trakcie operacji eksportu możesz użyć polecenia firestore operations list
, aby wyświetlić postęp operacji:
gcloud firestore operations list
Zaimportuj dane do projektu docelowego
Następnie daj projektowi docelowemu dostęp do plików danych Cloud Firestore i rozpocznij operację importowania.
Daj projektowi docelowemu dostęp do plików danych
Zanim rozpoczniesz operację importowania, musisz upewnić się, że projekt docelowy ma dostęp do plików danych Cloud Firestore.
Przenieś pliki danych do lokalnego zasobnika
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 sekcji Przenoszenie i zmienianie nazw zasobników . We wszystkich poniższych krokach użyj tego nowego zasobnika jako [SOURCE_BUCKET]
.
Przyznaj kontu usługi projektu dostęp do zasobnika źródłowego
Jeśli zasobnika źródłowego nie ma w projekcie docelowym, musisz przyznać domyślnemu kontu usługi projektu docelowego dostęp do zasobnika źródłowego. Domyślne konto usługi nosi 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.
Niezbędne role możesz nadać 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 także przyznać tę rolę w konsoli Google Cloud .
Rozpocznij operację importowania
Przed rozpoczęciem operacji importowania upewnij się, że gcloud
jest skonfigurowany dla prawidłowego 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
Gdzie [EXPORT_PREFIX]
odpowiada prefiksowi w pliku outputUriPrefix
operacji eksportu. Na przykład:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
W trakcie operacji eksportu możesz użyć polecenia firestore operations list
, aby wyświetlić postęp operacji:
gcloud firestore operations list