Uygulamanızı Firebase Emulator için Cloud Storage'a bağlayın

Uygulamanızı Cloud Storage for Firebase öykünücüsüne bağlamadan önce, genel Firebase Local Emulator Suite iş akışını anladığınızdan ve Local Emulator Suite'i kurup yapılandırdığınızdan ve CLI komutlarını gözden geçirdiğinizden emin olun.

Bir Firebase projesi seçin

Firebase Local Emulator Suite, tek bir Firebase projesine yönelik ürünleri taklit eder.

Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce, CLI'de çalışma dizininizde firebase use çalıştırın. Veya --project bayrağını her emulator komutuna iletebilirsiniz.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin emülasyonunu destekler.

Proje tipi Özellikler Emülatörlerle kullanın
Gerçek

Gerçek bir Firebase projesi, oluşturduğunuz ve yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla).

Gerçek projelerde veritabanı örnekleri, depolama grupları, işlevler veya Firebase projesi için ayarladığınız diğer kaynaklar gibi canlı kaynaklar bulunur.

Gerçek Firebase projeleriyle çalışırken desteklenen ürünlerin herhangi biri veya tümü için emülatörler çalıştırabilirsiniz.

Taklit etmediğiniz tüm ürünler için uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama grubu, işlev vb.) etkileşime girecektir.

Demo

Bir demo Firebase projesinde gerçek bir Firebase yapılandırması ve canlı kaynak yoktur. Bu projelere genellikle codelab'ler veya diğer eğitimler aracılığıyla erişilir.

Demo projelerine ait proje kimlikleri demo- önekine sahiptir.

Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörlerle etkileşime girer. Uygulamanız, öykünücünün çalışmadığı bir kaynakla etkileşim kurmaya çalışırsa bu kod başarısız olur.

Mümkün olan her yerde demo projelerini kullanmanızı öneririz. Faydaları şunları içerir:

  • Emülatörleri Firebase projesi oluşturmadan çalıştırabileceğiniz için daha kolay kurulum
  • Kodunuzun yanlışlıkla öykünmemiş (üretim) kaynakları çağırması durumunda veri değişikliği, kullanım ve faturalandırma şansı olmayacağı için daha güçlü güvenlik
  • SDK yapılandırmanızı indirmek için internete erişmenize gerek olmadığından daha iyi çevrimdışı destek.

Emülatörlerle konuşmak için uygulamanızı kullanın

Android, Apple platformları ve Web SDK'ları

Uygulama içi yapılandırmanızı veya test sınıflarınızı Cloud Storage for Firebase öykünücüsüyle etkileşim kuracak şekilde aşağıdaki gibi ayarlayın.

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);
Süratli
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);
} 

Öykünücüyü kullanarak Cloud Storage for Firebase olayları tarafından tetiklenen Bulut işlevlerini test etmek için ek kurulum gerekmez. Firebase için Cloud Storage ve Cloud Functions emülatörleri çalışırken otomatik olarak birlikte çalışırlar.

Yönetici SDK'ları

Firebase Yönetici SDK'ları, FIREBASE_STORAGE_EMULATOR_HOST ortam değişkeni ayarlandığında otomatik olarak Cloud Storage for Firebase öykünücüsüne bağlanır:

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

Cloud Functions emülatörünün, Cloud Storage for Firebase emülatörünü otomatik olarak algıladığını ve dolayısıyla Cloud Functions ile Cloud Storage for Firebase emülatörleri arasındaki entegrasyonları test ederken bu adımı atlayabileceğinizi unutmayın. Firebase için Cloud Storage'da Yönetici SDK'sı için ortam değişkeni otomatik olarak ayarlanacaktır.

Yönetici SDK kodunuzun başka bir ortamda çalışan paylaşılan bir emülatöre bağlanmasını istiyorsanız Firebase CLI'yi kullanarak belirlediğiniz proje kimliğini belirtmeniz gerekir. Doğrudan initializeApp için bir proje kimliği iletebilir veya GCLOUD_PROJECT ortam değişkenini ayarlayabilirsiniz.

Node.js Yönetici SDK'sı
admin.initializeApp({ projectId: "your-project-id" });
Çevre değişkeni
export GCLOUD_PROJECT="your-project-id"

Verileri içe ve dışa aktar

Veritabanı ve Cloud Storage for Firebase öykünücüleri, çalışan bir öykünücü örneğinden verileri dışa aktarmanıza olanak tanır. Birim testlerinizde veya sürekli entegrasyon iş akışlarınızda kullanılacak temel veri kümesini tanımlayın ve ardından bunu ekip arasında paylaşılmak üzere dışa aktarın.

firebase emulators:export ./dir

Testlerde emülatör başlatıldığında temel verileri içe aktarın.

firebase emulators:start --import=./dir

Öykünücüye, bir dışa aktarma yolu belirterek veya yalnızca --import bayrağına iletilen yolu kullanarak, kapatma sırasında verileri dışa aktarması talimatını verebilirsiniz.

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

Bu veri içe ve dışa aktarma seçenekleri firebase emulators:exec komutuyla da çalışır. Daha fazla bilgi için emülatör komut referansına bakın.

Firebase için Cloud Storage emülatörünün üretimden farkı nedir?

İstemci uygulamalarının test edilmesi için Cloud Storage for Firebase emülatörü, Firebase API yüzey alanı açısından üretime neredeyse mükemmel uyum sağlar. Tüm Firebase komutlarının normal Firebase SDK'ları (Web, Android ve Apple platformları) arasında çalışması beklenir.

Sunucu tarafı uygulamalarının test edilmesi için sınırlamalar mevcuttur. Firebase Yönetici SDK'ları Google Cloud API yüzeyini kullanır ve bu API'nin tüm uç noktaları taklit edilmez. Genel bir kural olarak, istemci SDK'larından yapılabilecek her şey (dosya yükleme veya silme, meta verileri alma ve ayarlama) Yönetici SDK'larından kullanılmak üzere de uygulanır, ancak bunun ötesindeki hiçbir şey uygulanmaz. Önemli istisnalar aşağıda listelenmiştir.

Google Cloud Storage'dan Farklar

Storage emülatörünü de içeren Cloud Storage for Firebase ürünü, Firebase uygulamaları geliştirmek için çok yararlı olan depolama nesnelerine odaklanan bir Google Cloud Storage (GCS) işlevselliği alt kümesi sağlar. Firebase için Cloud Storage, GCS'den aşağıdaki yönlerden farklılık gösterir:

  • Firebase için Cloud Storage, şu anda depolama paketlerinin oluşturulması, listelenmesi, alınması veya silinmesi için Bucket API'lerini desteklememektedir.
  • Google Cloud Storage Objects API'den şu yöntemler desteklenir: copy , delete , get , insert , list , patch , rewrite , update .

Bulut IAM

Firebase Emulator Suite, çalıştırma için IAM ile ilgili herhangi bir davranışı kopyalamaya veya bunlara uymaya çalışmaz. Emülatörler sağlanan Firebase Güvenlik Kurallarına uyar, ancak normalde IAM'in kullanılacağı durumlarda (örneğin, hizmet hesabını çağıran Cloud Functions'ı ve dolayısıyla izinleri ayarlamak için), emülatör yapılandırılamaz ve geliştirici makinenizde genel olarak mevcut olan hesabı kullanır. yerel bir betiği doğrudan çalıştırmaya benzer.

Pub/Sub bildirimleri

Firebase için Cloud Storage emülatörü, Cloud Pub/Sub emülatörüyle entegre değildir ve bu nedenle depolama nesnesi değişiklikleri için kanal/bildirim oluşturulmasını desteklemez. Cloud Functions Storage tetikleyicilerini doğrudan kullanmanızı öneririz.

Paket düzeyinde meta veriler

Firebase için Cloud Storage emülatörü, depolama sınıfı, paket düzeyinde CORS yapılandırması, etiketler veya saklama politikaları dahil olmak üzere herhangi bir paket düzeyindeki yapılandırmayı desteklemez. Firebase bu desteği zaman içinde geliştirmeyi planlıyor.

Sırada ne var?