Przed połączeniem aplikacji z emulatorem Cloud Storage for Firebase upewnij się, że rozumiesz ogólny przepływ pracy Firebase Local Emulator Suite , że instalujesz i konfigurujesz Local Emulator Suite oraz przeglądasz jego polecenia CLI .
Wybierz projekt Firebase
Firebase Local Emulator Suite emuluje produkty dla pojedynczego projektu Firebase.
Aby wybrać projekt do użycia, przed uruchomieniem emulatorów, w CLI uruchom firebase use
w swoim katalogu roboczym. Lub możesz przekazać flagę --project
do każdego polecenia emulatora.
Local Emulator Suite obsługuje emulację prawdziwych projektów Firebase i projektów demonstracyjnych .
Typ projektu | Cechy | Używaj z emulatorami |
---|---|---|
Prawdziwy | Prawdziwy projekt Firebase to taki, który utworzyłeś i skonfigurowałeś (najprawdopodobniej za pomocą konsoli Firebase). Prawdziwe projekty mają aktywne zasoby, takie jak instancje baz danych, zasobniki pamięci, funkcje lub wszelkie inne zasoby skonfigurowane dla tego projektu Firebase. | Pracując z prawdziwymi projektami Firebase, możesz uruchamiać emulatory dla dowolnego lub wszystkich obsługiwanych produktów. W przypadku produktów, których nie emulujesz, Twoje aplikacje i kod będą wchodzić w interakcje z aktywnym zasobem (instancja bazy danych, zasobnik pamięci, funkcja itp.). |
Próbny | Demonstracyjny projekt Firebase nie ma rzeczywistej konfiguracji Firebase ani aktywnych zasobów. Projekty te są zwykle dostępne za pośrednictwem laboratoriów kodów lub innych samouczków. Identyfikatory projektów dla projektów demonstracyjnych mają przedrostek | Podczas pracy z demonstracyjnymi projektami Firebase aplikacje i kod współdziałają tylko z emulatorami . Jeśli Twoja aplikacja spróbuje wejść w interakcję z zasobem, dla którego nie działa emulator, ten kod zakończy się niepowodzeniem. |
W miarę możliwości zalecamy korzystanie z projektów demonstracyjnych. Korzyści obejmują:
- Łatwiejsza konfiguracja, ponieważ możesz uruchamiać emulatory bez tworzenia projektu Firebase
- Większe bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowane (produkcyjne) zasoby, nie ma szans na zmianę danych, wykorzystanie i rozliczenie
- Lepsze wsparcie offline, ponieważ nie ma potrzeby dostępu do Internetu, aby pobrać konfigurację SDK.
Przygotuj swoją aplikację do komunikowania się z emulatorami
Platformy Android, Apple i Web SDK
Skonfiguruj konfigurację w aplikacji lub klasy testowe do interakcji z emulatorem Cloud Storage for Firebase w następujący sposób.
Kotlin+KTX
// 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);
Szybki
Storage.storage().useEmulator(withHost:"127.0.0.1", port:9199)
Web modular API
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 namespaced API
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Do testowania funkcji Cloud uruchamianych przez zdarzenia Cloud Storage for Firebase za pomocą emulatora nie jest wymagana żadna dodatkowa konfiguracja. Kiedy oba emulatory Cloud Storage for Firebase i Cloud Functions są uruchomione, automatycznie współpracują ze sobą.
Pakiety SDK administratora
Pakiety SDK Firebase Admin 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 emulator Cloud Functions automatycznie rozpoznaje emulator Cloud Storage for Firebase, 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 dla pakietu Admin SDK w Cloud Storage dla Firebase.
Jeśli chcesz, aby Twój kod Admin SDK łączył się z udostępnionym emulatorem działającym w innym środowisku, musisz podać ten sam identyfikator projektu, który ustawiłeś za pomocą Firebase CLI . Możesz przekazać identyfikator projektu bezpośrednio do initializeApp
lub ustawić zmienną środowiskową GCLOUD_PROJECT
.
Pakiet SDK administratora Node.js
admin.initializeApp({ projectId: "your-project-id" });
Zmienna środowiskowa
export GCLOUD_PROJECT="your-project-id"
Importuj i eksportuj dane
Baza danych i emulatory Cloud Storage for Firebase umożliwiają eksportowanie danych z działającej instancji emulatora. Zdefiniuj podstawowy zestaw danych do wykorzystania 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 zaimportuj dane linii bazowej.
firebase emulators:start --import=./dir
Możesz poinstruować emulator, aby wyeksportował dane podczas zamykania, określają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
. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją poleceń emulatora .
Czym różni się emulator Cloud Storage for Firebase od wersji produkcyjnej
W przypadku testowania aplikacji klienckich emulator Cloud Storage for Firebase prawie idealnie dopasowuje się do środowiska produkcyjnego pod względem powierzchni interfejsu Firebase API. Oczekuje się, że wszystkie polecenia Firebase będą działać między zwykłymi pakietami SDK Firebase (platformy internetowe, Android i Apple).
W przypadku testowania aplikacji po stronie serwera istnieją ograniczenia. Pakiety SDK Firebase Admin korzystają z interfejsu Google Cloud API i nie wszystkie punkty końcowe tego interfejsu API są emulowane. Z reguły wszystko, co można zrobić z pakietów SDK klienta (przesyłanie lub usuwanie plików, pobieranie i ustawianie metadanych), jest również implementowane do użytku z pakietów Admin SDK, ale nic poza tym nie jest. Godne uwagi wyłączenia wymieniono poniżej.
Różnice w stosunku do Google Cloud Storage
Produkt Cloud Storage for Firebase, w tym emulator Storage, zapewnia podzbiór funkcji Google Cloud Storage (GCS) skupiający się na obiektach pamięci masowej, co jest bardzo przydatne przy tworzeniu aplikacji Firebase. Cloud Storage dla Firebase różni się od GCS w następujący sposób:
- Cloud Storage dla Firebase obecnie nie obsługuje interfejsów
Bucket
API do tworzenia, wyświetlania, pobierania i usuwania zasobników pamięci. - Interfejs Google Cloud Storage Objects API obsługuje następujące metody:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
Uprawnienia w chmurze
Pakiet Firebase Emulator Suite nie próbuje replikować ani respektować żadnych zachowań związanych z IAM podczas uruchamiania. Emulatory są zgodne z podanymi Regułami bezpieczeństwa Firebase, ale w sytuacjach, w których IAM byłyby normalnie używane, na przykład do ustawiania konta usługi wywołującego Cloud Functions, a tym samym uprawnień, emulatora nie można konfigurować i użyje globalnie dostępnego konta na komputerze programisty, podobne do bezpośredniego uruchamiania lokalnego skryptu.
Powiadomienia Pub/Sub
Emulator Cloud Storage for Firebase nie integruje się z emulatorem Cloud Pub/Sub, a zatem nie obsługuje tworzenia kanałów/powiadomień o zmianach obiektów pamięci masowej. Zalecamy bezpośrednie używanie wyzwalaczy Cloud Functions Storage.
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 ulepszyć to wsparcie.
Co następne?
- Aby zapoznać się z wyselekcjonowanym zestawem filmów i szczegółowymi przykładami, postępuj zgodnie z listą odtwarzania szkoleniowych emulatorów Firebase .
- Ponieważ wyzwalane funkcje są typową integracją z Cloud Storage for Firebase, dowiedz się więcej o emulatorze Cloud Functions for Firebase na stronie Uruchom funkcje lokalnie .