Połącz aplikację z emulatorem Cloud Storage dla Firebase

Zanim połączysz aplikację z emulatorem Cloud Storage for Firebase, sprawdź, czy znasz ogólny przepływ pracy w Firebase Local Emulator Suite, oraz musisz zainstalować i skonfigurować Local Emulator Suite i zapoznaj się z poleceniami interfejsu wiersza poleceń.

Wybierz projekt Firebase

Funkcja Firebase Local Emulator Suite emuluje produkty z jednego projektu Firebase.

Aby wybrać projekt do użycia, przed uruchomieniem emulatorów uruchom interfejs wiersza poleceń firebase use w katalogu roboczym. Możesz też przejść flagę --project poszczególnych emulatorów .

Local Emulator Suite obsługuje emulację prawdziwych projektów Firebase oraz projektów demograficznych.

Typ projektu Funkcje Używanie z emulatorami
Prawdziwe

Prawdziwy projekt Firebase to projekt utworzony i skonfigurowany przez Ciebie (najprawdopodobniej za pomocą konsoli Firebase).

Prawdziwe projekty mają aktywne zasoby, takie jak instancje baz danych, miejsce na dane zasobników, funkcji lub innych zasobów utworzonych dla danej usługi Firebase w projektach AI.

Podczas pracy z prawdziwymi projektami Firebase możesz używać emulatorów dla lub wszystkich obsługiwanych usług.

W przypadku usług, których nie emulujesz, aplikacje i kod będą interakcja z zasobem aktywnym (instancją bazy danych, pamięcią masową) zasobnik, funkcja itp.).

Wersja demonstracyjna

Projekt demonstracyjny Firebase nie ma rzeczywistej konfiguracji Firebase oraz brak aktywnych zasobów. Dostęp do tych projektów uzyskuje się zazwyczaj w ramach ćwiczeń z programowania lub innych samouczków.

Identyfikatory projektów demonstracyjnych mają prefiks demo-.

Podczas pracy z projektami demonstracyjnymi Firebase Twoje aplikacje i kod współdziałają tylko emulatory. Jeśli aplikacja próbuje wchodzić w interakcję z zasobem w przypadku których emulator nie jest uruchomiony, kod ten zakończy się niepowodzeniem.

Zalecamy, aby w miarę możliwości korzystać 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 konieczności tworzenia Projekt Firebase
  • Silniejsze bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowany (produkcyjnych), nie jest prawdopodobne, że nastąpi zmiana danych, jego użycia i rozliczeń
  • lepsza obsługa offline, ponieważ nie trzeba łączyć się z internetem, pobierz konfigurację pakietu SDK.
.

Dostosuj aplikację do emulatorów

Platformy Android, Apple i internetowe pakiety SDK

Skonfiguruj konfigurację w aplikacji lub sprawdź zajęcia, aby korzystać z Emulator Cloud Storage for Firebase w ten 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);
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 w Cloud aktywowane przez zdarzenia Cloud Storage for Firebase, nie jest wymagana dodatkowa konfiguracja za pomocą emulatora. Gdy Cloud Storage for Firebase i Cloud Functions działają i automatycznie ze sobą współpracują.

Admin SDK s

Urządzenia Firebase Admin SDK automatycznie łączą się z Cloud Storage for Firebase w emulatorze, 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 wykrywa Emulatorowi Cloud Storage for Firebase, więc możesz pominąć ten krok podczas testowania integracje między Cloud Functions a Cloud Storage for Firebase za pomocą emulatorów. Zmienna środowiskowa zostanie automatycznie ustawiona dla pakietu Admin SDK. w usłudze Cloud Storage for Firebase.

Jeśli chcesz, aby kod Admin SDK łączył się ze współdzielonym emulatorem działającym w w innym środowisku, musisz podać ten sam identyfikator projektu, który ustawiasz za pomocą interfejsu wiersza poleceń Firebase. Możesz przekazać identyfikator projektu bezpośrednio do initializeApp lub ustawić Zmienna środowiskowa GCLOUD_PROJECT.

Pakiet SDK administratora Node.js
admin.initializeApp({ projectId: "your-project-id" });
Zmienna środowiskowa
export GCLOUD_PROJECT="your-project-id"

Importowanie i eksportowanie danych

Baza danych i emulatory usługi Cloud Storage for Firebase umożliwiają eksportowanie danych z działającej instancji emulatora. Zdefiniuj bazowy zbiór danych do użycia testów jednostkowych lub przepływów pracy w trybie ciągłej integracji, a następnie je wyeksportować, aby je udostępnić. w zespole.

firebase emulators:export ./dir

Podczas uruchamiania emulatora zaimportuj dane podstawowe podczas testów.

firebase emulators:start --import=./dir

Możesz polecić emulatorowi eksportowanie danych po wyłączeniu, określając eksportu lub po prostu za pomocą ścieżki przekazywanej do funkcji --import flaga.

firebase emulators:start --import=./dir --export-on-exit

Te opcje importu i eksportu danych działają z firebase emulators:exec. Więcej informacji: dokumentacja polecenia emulatora.

Czym różni się emulator Cloud Storage for Firebase od wersji produkcyjnej

Do testowania aplikacji klienckich emulator Cloud Storage for Firebase dopasowuje się do jeśli chodzi o obszar interfejsu Firebase API. Wszystkie Polecenia Firebase powinny działać między zwykłymi pakietami SDK Firebase (Internet, Android i Apple).

W przypadku testowania aplikacji po stronie serwera obowiązują pewne ograniczenia. Pakiety SDK Firebase Admin używaj platformy interfejsu API Google Cloud. Nie wszystkie punkty końcowe tego interfejsu i emulacjach. Zaleca się, aby wszelkie działania wykonywane za pomocą pakietów SDK klienta (przesyłanie lub usuwanie plików, pobieranie i ustawianie metadanych) jest również zaimplementowane do wykorzystania za pomocą pakietów Admin SDK, ale wszystkie inne rozwiązania nie są. Istotne wykluczenia podane poniżej.

Różnice w porównaniu z Google Cloud Storage

Usługa Cloud Storage for Firebase, w tym emulator pamięci masowej, zapewnia podzbiór funkcji Google Cloud Storage (GCS) skoncentrowanych na obiektach pamięci masowej przydatne przy tworzeniu aplikacji Firebase. Cloud Storage for Firebase różni się od GCS pod tymi względami:

  • Cloud Storage for Firebase nie obsługuje obecnie interfejsów API Bucket w przypadku tworzenia, wyświetlania listy, pobierania lub usuwania zasobników na dane.
  • Za pomocą interfejsu Google Cloud Storage Objects API możesz: obsługiwane metody: copy, delete, get, insert, list, patch, rewrite, update.

Cloud IAM

Pakiet emulatorów Firebase nie próbuje replikować ani nie przestrzegać Zachowanie związane z uprawnieniami przy uruchamianiu. Emulatory są zgodne z zasadami zabezpieczeń Firebase Reguły są podane, ale w sytuacjach, gdy są one zwykle używane, na przykład do ustawienia wywoływania konta usługi przez Cloud Functions, a tym samym do ustawiania uprawnień, Nie można skonfigurować emulatora. Używa on dostępnego globalnie konta na komputerze programisty, podobnie jak w przypadku bezpośredniego uruchomienia skryptu.

Powiadomienia Pub/Sub

Emulator Cloud Storage for Firebase nie integruje się z Google Cloud Emulator Pub/Sub, więc nie obsługuje tworzenia kanałów/powiadomień o zmianach obiektu pamięci masowej. Zalecamy użycie Cloud Functions Bezpośrednio aktywujący pamięć masową.

Metadane na poziomie zasobnika

Emulator Cloud Storage for Firebase nie obsługuje żadnego z poziomów zasobnika konfigurację, w tym klasę pamięci, konfigurację CORS na poziomie zasobnika, etykiety lub zasadami przechowywania. Firebase planuje z czasem ulepszyć tę funkcję.

Co dalej?