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

Uygulamanızı Cloud Storage for Firebase emülatörüne bağlamadan önce genel Firebase Local Emulator Suite iş akışını anladığınızdan, Local Emulator Suite aracını yükleyip yapılandırdığınızdan ve CLI komutlarını incelediğinizden emin olun.

Firebase projesi seçme

Firebase Local Emulator Suite, tek bir Firebase projesi için ürünleri taklit eder.

Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce çalışma dizininizdeki KSA'da firebase use komutunu çalıştırın. Alternatif olarak, her emülatör komutuna --project işaretini iletebilirsiniz.

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

Proje türü Özellikler Emülatörlerle kullanma
Real

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

Gerçek projelerde veritabanı örnekleri, depolama paketleri, işlevler veya ilgili 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ör çalıştırabilirsiniz.

Emüle etmediğiniz ürünler için uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama alanı paketi, işlev vb.) etkileşim kurar.

Demo

Demo Firebase projesinde gerçek Firebase yapılandırması ve canlı kaynaklar yoktur. Bu projelere genellikle codelab'ler veya diğer eğitimler üzerinden erişilir.

Demo projelerinin proje kimliklerinde demo- ön eki bulunur.

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

Mümkün olduğunda demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:

  • Firebase projesi oluşturmadan emülatörleri çalıştırabildiğiniz için daha kolay kurulum
  • Kodunuz yanlışlıkla emüle edilmemiş (üretim) kaynakları çağırırsa veri değişikliği, kullanım ve faturalandırma olasılığı olmadığından daha güçlü güvenlik
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek sunulur.

Uygulamanızı emülatörlerle iletişim kuracak şekilde yapılandırma

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 emülatörüyle etkileşim kuracak şekilde aşağıdaki gibi ayarlayın.

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)
Unity
FirebaseStorage storage = FirebaseStorage.DefaultInstance;
// Connects to the Storage Emulator running on port 9199
storage.UseEmulator("127.0.0.1", 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);
} 

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

Admin SDK

FIREBASE_STORAGE_EMULATOR_HOST ortam değişkeni ayarlandığında Firebase Admin SDK, Cloud Storage for Firebase emülatörüne otomatik olarak bağlanır:

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

Cloud Functions emülatörü, Cloud Storage for Firebase emülatörünü otomatik olarak algılar. Bu nedenle, Cloud Functions ve Cloud Storage for Firebase emülatörleri arasındaki entegrasyonları test ederken bu adımı atlayabilirsiniz. Ortam değişkeni, Cloud Storage for Firebase içinde Admin SDK için otomatik olarak ayarlanır.

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

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
Ortam Değişkeni
export GCLOUD_PROJECT="your-project-id"

Verileri içe ve dışa aktarma

Veritabanı ve Cloud Storage for Firebase emülatörleri, çalışan bir emülatör örneğinden veri aktarmanıza olanak tanır. Birim testlerinizde veya sürekli entegrasyon iş akışlarınızda kullanmak için temel bir veri kümesi tanımlayın, ardından ekiple paylaşmak üzere bu veri kümesini dışa aktarın.

firebase emulators:export ./dir

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

firebase emulators:start --import=./dir

Emülatöre, kapatma sırasında verileri dışa aktarmasını söyleyebilirsiniz. Bunun için bir dışa aktarma yolu belirtebilir veya --import işaretine iletilen yolu kullanabilirsiniz.

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.

Cloud Storage for Firebase emülatörünün üretimden farkı

İstemci uygulamalarını test etmek için Cloud Storage for Firebase emülatörü, Firebase API yüzey alanı açısından üretimle neredeyse mükemmel bir ş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 edilmesiyle ilgili sınırlamalar vardır. Firebase Admin SDK'ları Google Cloud API yüzeyini kullanır ve bu API'nin tüm uç noktaları emüle edilmez. Genel bir kural olarak, istemci SDK'larından yapılabilen her şey (dosya yükleme veya silme, meta veri 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ü de dahil olmak üzere Cloud Storage for Firebase ürünü, Google Cloud Storage (GCS) işlevlerinin bir alt kümesini sunar. Bu alt küme, depolama nesnelerine odaklanır ve Firebase uygulamaları geliştirmek için çok kullanışlıdır. Cloud Storage for Firebase, GCS'den şu yönleriyle farklıdır:

  • Cloud Storage for Firebase şu anda depolama alanı paketleri oluşturma, listeleme, alma veya silme için Bucket API'lerini desteklemiyor.
  • Google Cloud Storage Objects API'den şu yöntemler desteklenir: copy, delete, get, insert, list, patch, rewrite, update.

Cloud IAM

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

Pub/Sub bildirimleri

Cloud Storage for Firebase emülatörü, Cloud Pub/Sub emülatörüyle entegre olmadığından depolama nesnesi değişiklikleri için kanal/bildirim oluşturmayı desteklemez. Doğrudan Cloud Functions Storage tetikleyicilerini kullanmanızı öneririz.

Paket düzeyinde meta veriler

Cloud Storage for Firebase emülatörü; depolama sınıfı, kova düzeyinde CORS yapılandırması, etiketler veya saklama politikaları dahil olmak üzere kova düzeyinde yapılandırmaları desteklemez. Firebase, bu desteği zaman içinde iyileştirmeyi planlamaktadır.

Sonrasında ne olacak?

  • Seçilmiş videolar ve ayrıntılı nasıl yapılır örnekleri için Firebase Emulators Training Playlist'i (Firebase Emulator'ları Eğitim Oynatma Listesi) takip edin.
  • Tetiklenen işlevler Cloud Storage for Firebase ile tipik bir entegrasyon olduğundan, Cloud Functions for Firebase emülatörü hakkında daha fazla bilgiyi İşlevleri yerel olarak çalıştırma sayfasında bulabilirsiniz.