Zanim połączysz aplikację z emulatorem Cloud Storage for Firebase, upewnij się że rozumiesz ogólny przepływ pracy Firebase Local Emulator Suite, oraz że zainstalujesz i skonfigurujesz Local Emulator Suite i zapoznasz się z jego poleceniami CLI.
Wybieranie projektu w Firebase
Firebase Local Emulator Suite emuluje produkty w jednym projekcie w Firebase.
Aby wybrać projekt, którego chcesz używać, przed uruchomieniem emulatorów wpisz w CLI polecenie firebase use w katalogu roboczym. Możesz też przekazać
flagę --project do każdego polecenia emulatora.
Local Emulator Suite obsługuje emulację rzeczywistych projektów Firebase i demonstracyjnych projektów.
| Typ projektu | Funkcje | Użycie z emulatorami |
|---|---|---|
| Rzeczywisty |
Rzeczywisty projekt w Firebase to projekt, który został utworzony i skonfigurowany (najprawdopodobniej w Firebase konsoli). Rzeczywiste projekty mają aktywne zasoby, takie jak instancje bazy danych, zasobniki pamięci masowej funkcje lub inne zasoby skonfigurowane w tym projekcie Firebase |
Podczas pracy z rzeczywistymi projektami Firebase możesz uruchamiać emulatory dowolnych lub wszystkich obsługiwanych produktów. W przypadku produktów, które nie są emulowane, Twoje aplikacje i kod będą wchodzić w interakcje z aktywnym zasobem (instancją bazy danych, zasobnikiem pamięci masowej, funkcją itp.). |
| Demonstracyjny |
Demonstracyjny projekt w Firebase nie ma rzeczywistej konfiguracji Firebase ani aktywnych zasobów. Dostęp do tych projektów jest zwykle uzyskiwany za pomocą warsztatów programistycznych lub innych samouczków. Identyfikatory projektów demonstracyjnych mają prefiks |
Podczas pracy z demonstracyjnymi projektami Firebase Twoje aplikacje i kod wchodzą w interakcje z emulatorami tylko. Jeśli aplikacja spróbuje wejść w interakcję z zasobem dla którego nie jest uruchomiony emulator, kod się nie wykona. |
Jeśli to możliwe, zalecamy używanie projektów demonstracyjnych. W ten sposób możesz zapewnić im dostęp do tych korzyści:
- Łatwiejsza konfiguracja, ponieważ możesz uruchamiać emulatory bez tworzenia projektu w Firebase.
- Większe bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowane (produkcyjne) zasoby, nie będzie możliwości zmiany danych, użycia ani rozliczenia.
- Lepsza obsługa offline, ponieważ nie musisz uzyskiwać dostępu do internetu, aby pobrać konfigurację pakietu SDK.
Instrumentowanie aplikacji do komunikacji z emulatorami
Pakiety SDK na Androida, platformy Apple i do aplikacji internetowych
Skonfiguruj ustawienia w aplikacji lub klasy testowe, aby wchodzić w interakcje z Cloud Storage for Firebase emulatorem w ten sposób.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Aby przetestować funkcje Cloud Functions wywoływane przez zdarzenia za pomocą emulatora, nie musisz wykonywać żadnych dodatkowych czynności.Cloud Storage for Firebase Gdy emulatory Cloud Storage for Firebase i Cloud Functions są uruchomione, automatycznie współpracują ze sobą.
Admin SDKs
Pakiety Firebase Admin SDK automatycznie łączą się z emulatorem Cloud Storage for Firebase
, gdy ustawiona jest zmienna środowiskowa FIREBASE_STORAGE_EMULATOR_HOST:
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Emulator Cloud Functions automatycznie wykrywa Cloud Storage for Firebase emulator, więc możesz pominąć ten krok podczas testowania integracji między Cloud Functions i Cloud Storage for Firebase emulatorami. Zmienna środowiskowa zostanie automatycznie ustawiona w przypadku pakietu Admin SDK w Cloud Storage for Firebase.
Jeśli chcesz, aby kod Admin SDK łączył się z udostępnionym emulatorem działającym w
innym środowisku, musisz podać ten sam identyfikator projektu, który został ustawiony za pomocą wiersza poleceń Firebase.
Identyfikator projektu możesz przekazać bezpośrednio do initializeApp lub ustawić zmienną środowiskową GCLOUD_PROJECT.
Pakiet Admin SDK na Node.js
admin.initializeApp({ projectId: "your-project-id" });
Zmienna środowiskowa
export GCLOUD_PROJECT="your-project-id"
Importowanie i eksportowanie danych
Emulatory bazy danych i Cloud Storage for Firebase umożliwiają eksportowanie danych z uruchomionej instancji emulatora. Zdefiniuj podstawowy zestaw danych, który będzie używany w testach jednostkowych lub przepływach pracy ciągłej integracji, a następnie wyeksportuj go, aby udostępnić go zespołowi.
firebase emulators:export ./dirW testach, po uruchomieniu emulatora, zaimportuj dane podstawowe.
firebase emulators:start --import=./dirMożesz poinstruować emulator, aby eksportował dane po zamknięciu, podając ścieżkę eksportu lub po prostu używając ścieżki przekazanej do flagi --import.
firebase emulators:start --import=./dir --export-on-exitTe opcje importowania i eksportowania danych działają też z poleceniem firebase emulators:exec. Więcej informacji znajdziesz w
dokumentacji poleceń emulatora.
Różnice między emulatorem Cloud Storage for Firebase a środowiskiem produkcyjnym
W przypadku testowania aplikacji klienckich emulator Cloud Storage for Firebase jest niemal idealnie zgodny ze środowiskiem produkcyjnym pod względem obszaru interfejsu Firebase API. Wszystkie polecenia Firebase powinny działać w przypadku zwykłych pakietów Firebase SDK (do aplikacji internetowych, na Androida i platformy Apple).
W przypadku testowania aplikacji po stronie serwera istnieją ograniczenia. Pakiety Firebase Admin SDK korzystają z obszaru interfejsu Google Cloud API, a nie wszystkie punkty końcowe tego interfejsu są emulowane. Zasadniczo wszystko, co można zrobić za pomocą pakietów SDK klienta (przesyłanie lub usuwanie plików, pobieranie i ustawianie metadanych), jest też zaimplementowane do użytku w pakietach Admin SDK, ale nic więcej. Poniżej znajdziesz listę najważniejszych wykluczeń.
Różnice w porównaniu z Google Cloud Storage
Usługa Cloud Storage for Firebase w tym emulator Storage, udostępnia podzbiór funkcji Google Cloud Storage (GCS), które koncentrują się na obiektach pamięci masowej i są bardzo przydatne do tworzenia aplikacji Firebase. Cloud Storage for Firebase różni się od GCS w tych kwestiach:
- Cloud Storage for Firebase nie obsługuje obecnie interfejsów API
Bucketdo tworzenia, wyświetlania, pobierania ani usuwania zasobników pamięci masowej. - Z interfejsu Google Cloud Storage Objects API obsługiwane są te metody:
copy,delete,get,insert,list,patch,rewrite,update.
Cloud IAM
Pakiet emulatorów Firebase nie próbuje replikować ani respektować żadnych zachowań związanych z IAM. Emulatory przestrzegają podanych reguł zabezpieczeń Firebase, ale w sytuacjach, w których zwykle używa się IAM, np. do ustawienia konta usługi wywołującej Cloud Functions i tym samym uprawnień, emulator nie jest konfigurowalny i będzie używać ogólnodostępnego konta na komputerze dewelopera, podobnie jak w przypadku bezpośredniego uruchamiania skryptu lokalnego.
Powiadomienia Pub/Sub
Emulator Cloud Storage for Firebase nie jest zintegrowany z emulatorem Cloud Pub/Sub, dlatego nie obsługuje tworzenia kanałów ani powiadomień o zmianach obiektów pamięci masowej. Zalecamy bezpośrednie używanie Cloud Functions reguł Storage.
Metadane na poziomie zasobnika
Emulator Cloud Storage for Firebase nie obsługuje żadnej konfiguracji na poziomie zasobnika, w tym klasy pamięci masowej, konfiguracji CORS na poziomie zasobnika, etykiet ani zasad przechowywania. Firebase planuje z czasem poprawić tę obsługę.
Co dalej?
- Wyselekcjonowany zestaw filmów i szczegółowych instrukcji z przykładami znajdziesz na playliście szkoleń na temat emulatorów Firebase: Firebase Emulators Training Playlist.
- Funkcje wywoływane są typową integracją z Cloud Storage for Firebase, dowiedz się więcej o emulatorze Cloud Functions for Firebase w artykule Uruchamianie funkcji lokalnie.