Zanim połączysz aplikację z emulatorem Cloud Storage for Firebase, upewnij się, że znasz ogólny Firebase Local Emulator Suiteprzepływ pracy, zainstalujesz i skonfigurujesz Local Emulator Suite oraz zapoznasz się z jego poleceniami CLI.
Wybieranie projektu Firebase
Firebase Local Emulator Suite emuluje usługi dla jednego projektu 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ę prawdziwych projektów Firebase i projektów demonstracyjnych.
Typ projektu | Funkcje | Korzystanie z emulatorami |
---|---|---|
Real |
Prawdziwy projekt Firebase to projekt, który został utworzony i skonfigurowany (najprawdopodobniej w Firebasekonsoli). Prawdziwe projekty mają aktywne zasoby, takie jak instancje baz danych, zasobniki pamięci, funkcje lub inne zasoby skonfigurowane w tym projekcie Firebase. |
Podczas pracy z prawdziwymi projektami Firebase możesz uruchamiać emulatory dowolnych lub wszystkich obsługiwanych usług. W przypadku wszystkich usług, których nie emulujesz, Twoje aplikacje i kod będą wchodzić w interakcje z zasobem na żywo (instancją bazy danych, zasobnikiem pamięci, funkcją itp.). |
Prezentacja |
Projekt demonstracyjny Firebase nie ma prawdziwej konfiguracji Firebase ani aktywnych zasobów. Dostęp do tych projektów uzyskuje się zwykle za pomocą ćwiczeń z programowania lub innych samouczków. Identyfikatory projektów demonstracyjnych mają prefiks |
Podczas pracy z demonstracyjnymi projektami Firebase aplikacje i kod wchodzą w interakcje tylko z emulatorami. Jeśli aplikacja spróbuje wejść w interakcję z zasobem, dla którego nie działa emulator, kod nie zadziała. |
Zalecamy korzystanie w miarę możliwości z projektów demonstracyjnych. W ten sposób możesz zapewnić im dostęp do tych korzyści:
- Łatwiejsza konfiguracja, ponieważ emulatory można uruchamiać bez tworzenia projektu Firebase.
- Większe bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła zasoby nieemulowane (produkcyjne), nie ma możliwości zmiany danych, wykorzystania zasobów ani naliczenia opłat.
- Lepsza obsługa offline, ponieważ nie musisz uzyskiwać dostępu do internetu, aby pobrać konfigurację pakietu SDK.
Dostosuj aplikację, aby komunikowała się z emulatorami
Pakiety SDK na Androida, platformy Apple i pakiety SDK internetowe
Skonfiguruj ustawienia w aplikacji lub klasy testowe, aby wchodzić w interakcje z emulatorem Cloud Storage for Firebase 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 wywoływane przez zdarzenia Cloud Storage for Firebase za pomocą emulatora, nie musisz niczego dodatkowo konfigurować. Gdy emulatory Cloud Storage for Firebase i Cloud Functions są uruchomione, automatycznie ze sobą współpracują.
Admin SDK s
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"
Pamiętaj, że Cloud Functions emulator automatycznie wykrywa Cloud Storage for Firebase emulator, więc możesz pominąć ten krok podczas testowania integracji między emulatorami Cloud Functions i Cloud Storage for Firebase. Zmienna środowiskowa zostanie automatycznie ustawiona w pakiecie Admin SDK w Cloud Storage for Firebase.
Jeśli chcesz, aby kod Admin SDK łączył się ze współdzielonym 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 Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
Zmienna środowiskowa
export GCLOUD_PROJECT="your-project-id"
Importowanie i eksportowanie danych
Baza danych i emulatory Cloud Storage for Firebase umożliwiają eksportowanie danych z działającej instancji emulatora. Zdefiniuj podstawowy zestaw danych do użycia 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 ./dir
W testach podczas uruchamiania emulatora importuj dane podstawowe.
firebase emulators:start --import=./dir
Możesz polecić emulatorowi eksportowanie danych po wyłączeniu, podając ścieżkę eksportu lub po prostu używając ścieżki przekazanej do flagi --import
.
firebase emulators:start --import=./dir --export-on-exit
Te opcje importu i eksportu danych działają również z poleceniem
firebase emulators:exec
. Więcej informacji znajdziesz w dokumentacji poleceń emulatora.
Różnice między emulatorem Cloud Storage for Firebase a wersją produkcyjną
W przypadku testowania aplikacji klienckich Cloud Storage for Firebaseemulator jest niemal idealnie zgodny z wersją produkcyjną pod względem obszaru interfejsu Firebase API. Wszystkie polecenia Firebase powinny działać w przypadku zwykłych pakietów SDK Firebase (platformy internetowe, Android i Apple).
W przypadku testowania aplikacji po stronie serwera istnieją ograniczenia. Pakiety Firebase Admin SDK korzystają z Google Cloud API, ale nie wszystkie punkty końcowe tego interfejsu API 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 również zaimplementowane do użytku w pakietach SDK administratora, ale nic więcej. Poniżej znajdziesz listę najważniejszych wykluczeń.
Różnice w porównaniu z Google Cloud Storage
Cloud Storage for Firebase, w tym emulator Storage, udostępnia podzbiór funkcji Google Cloud Storage (GCS) skupiający się na obiektach pamięci, który jest bardzo przydatny podczas tworzenia aplikacji Firebase. Cloud Storage for Firebase różni się od GCS pod kilkoma względami:
- Cloud Storage for Firebase nie obsługuje obecnie interfejsów API
Bucket
do tworzenia, wyświetlania, pobierania ani usuwania zasobników pamięci. - W interfejsie 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 uwzględniać żadnych zachowań związanych z IAM podczas działania. Emulatory są zgodne z podanymi regułami zabezpieczeń Firebase, ale w sytuacjach, w których zwykle używa się IAM, np. do ustawienia konta usługi wywołującej Cloud Functions, a tym samym uprawnień, emulator nie jest konfigurowalny i będzie używać globalnie dostępnego konta na komputerze dewelopera, podobnie jak w przypadku bezpośredniego uruchamiania lokalnego skryptu.
Powiadomienia Pub/Sub
Emulator Cloud Storage for Firebase nie jest zintegrowany z emulatorem CloudPub/Sub, więc nie obsługuje tworzenia kanałów ani powiadomień o zmianach w obiektach pamięci. Zalecamy bezpośrednie używanie Cloud Functionsreguł dotyczących miejsca na dane.
Metadane na poziomie zasobnika
Emulator Cloud Storage for Firebase nie obsługuje żadnej konfiguracji na poziomie zasobnika, w tym klasy pamięci, konfiguracji CORS na poziomie zasobnika, etykiet ani zasad przechowywania. Firebase zamierza z czasem ulepszać tę obsługę.
Co dalej?
- Zestaw wyselekcjonowanych filmów i szczegółowych instrukcji z przykładami znajdziesz na playliście szkoleń na temat emulatorów Firebase.
- Funkcje wywoływane przez zdarzenia są typową integracją z Cloud Storage for Firebase. Więcej informacji o emulatorze Cloud Functions for Firebase znajdziesz w artykule Uruchamianie funkcji lokalnie.