了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

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, ürünleri tek bir Firebase projesi için taklit eder.

Kullanılacak projeyi seçmek için, öykünücüleri başlatmadan önce, CLI'da çalışma dizininizdeki firebase use . Veya --project bayrağını her emülatör 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 sizin oluşturup yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla).

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

Gerçek Firebase projeleriyle çalışırken, desteklenen ürünlerin herhangi biri veya tümü için öykünücüler çalıştırabilirsiniz.

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

Demo

Bir demo Firebase projesinde gerçek bir Firebase yapılandırması ve canlı kaynak yoktur. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir.

Demo projeleri için proje kimliklerinde demo- öneki bulunur.

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şime girmeye çalışırsa, bu kod başarısız olur.

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

  • Bir Firebase projesi oluşturmadan öykünücüleri çalıştırabileceğiniz için daha kolay kurulum
  • Daha güçlü güvenlik, çünkü kodunuz yanlışlıkla öykünülmemiş (üretim) kaynakları çalıştırırsa veri değişikliği, kullanım ve faturalandırma şansı olmaz
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

Öykünücülerle konuşmak için uygulamanızı kullanın

Android, Apple platformları ve Web SDK'ları

Cloud Storage for Firebase emülatörü ile etkileşim kurmak için uygulama içi yapılandırmanızı veya test sınıflarınızı 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:"localhost", port:9199)
Web v8
var storage = firebase.storage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  storage.useEmulator("localhost", 9199);
} 
Web v9
const { getStorage, connectStorageEmulator } = require("firebase/storage");

const storage = getStorage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  connectStorageEmulator(storage, "localhost", 9199);
} 

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

Yönetici SDK'ları

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

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

Cloud Functions öykünücüsünün Cloud Storage for Firebase öykünücüsünden otomatik olarak haberdar olduğunu unutmayın; bu nedenle, Cloud Functions ve Cloud Storage for Firebase öykünücüleri arasındaki entegrasyonları test ederken bu adımı atlayabilirsiniz. Ortam değişkeni, Cloud Storage for Firebase'de Admin SDK için otomatik olarak ayarlanacaktır.

Admin SDK kodunuzun başka bir ortamda çalışan paylaşılan bir öykünücüye bağlanmasını istiyorsanız, Firebase CLI'yi kullanarak ayarladığınız aynı 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 aktarma

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 kullanmak üzere bir temel veri seti tanımlayın ve ardından bunu ekip arasında paylaşmak üzere dışa aktarın.

firebase emulators:export ./dir

Testlerde, öykünücü başlangıcı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 aktarma talimatı 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 fazlası için öykünücü komut başvurusuna bakın.

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

İstemci uygulamalarının test edilmesi için Cloud Storage for Firebase öykünücüsü, Firebase API yüzey alanı açısından üretime neredeyse mükemmel şekilde 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 test edilmesi için sınırlamalar mevcuttur. Firebase Admin SDK'ları, Google Cloud API yüzeyini kullanır ve bu API'nin tüm uç noktaları öykünmez. Genel bir kural olarak, istemci SDK'larından yapılabilen her şey (dosya yükleme veya silme, meta verileri alma ve ayarlama) Yönetici SDK'larından kullanım için de uygulanır, ancak bunun ötesindeki hiçbir şey uygulanmaz. Önemli istisnalar aşağıda listelenmiştir.

Google Bulut Depolamadan Farklar

Firebase için Bulut Depolama ürünü, Depolama emülatörü de dahil olmak üzere, Google Bulut Depolama (GCS) işlevselliğinin, Firebase uygulamaları geliştirmek için çok yararlı olan depolama nesnelerine odaklanan bir alt kümesini sağlar. Firebase için Bulut Depolama, GCS'den aşağıdaki şekillerde farklılık gösterir:

  • Firebase için Cloud Storage, şu anda depolama paketleri oluşturmak, listelemek, almak veya silmek için Bucket API'lerini desteklememektedir.
  • Google Bulut Depolama Nesneleri API'sinden şu yöntemler desteklenir: copy , delete , get , insert , list , patch , rewrite , update .

Bulut IAM'si

Firebase Emulator Suite, çalıştırmak için IAM ile ilgili herhangi bir davranışı kopyalamaya veya bunlara uymaya çalışmaz. Öykünücüler, sağlanan Firebase Güvenlik Kurallarına uyar, ancak örneğin, hizmet hesabını ve dolayısıyla izinleri çağıran Bulut İşlevlerini ayarlamak için IAM'nin normalde kullanılacağı durumlarda, öykünücü yapılandırılamaz ve geliştirici makinenizde küresel olarak kullanılabilen hesabı kullanır. doğrudan yerel bir betiği çalıştırmaya benzer.

Pub/Sub bildirimleri

Cloud Storage for Firebase emülatörü, Cloud Pub/Sub emülatörü ile entegre değildir ve bu nedenle, depolama nesnesi değişiklikleri için kanallar/bildirimler oluşturmayı desteklemez. Doğrudan Cloud Functions Storage tetikleyicilerini kullanmanızı öneririz.

Paket düzeyinde meta veriler

Cloud Storage for Firebase öykünücüsü, depolama sınıfı, grup düzeyinde CORS yapılandırması, etiketler veya saklama ilkeleri dahil olmak üzere hiçbir paket düzeyinde yapılandırmayı desteklemez. Firebase, bu desteği zaman içinde geliştirmeyi amaçlamaktadır.

Sırada ne var?