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

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

Firebase projesi seçin

Firebase Local Emulator Suite, tek bir Firebase projesi için ürün emülasyonu yapar.

Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce, çalışma dizininizde CLI'yı firebase use çalıştırın. Alternatif olarak --project işaretini her emülatör komutuna aktarabilirsiniz.

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

Proje türü Özellikler Emülatörlerle kullanım
Gerçek

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 Firebase projesi için oluşturduğunuz 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.

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

Demo

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

Demo projeleri için 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, emülatörün çalışmadığı bir kaynakla etkileşim kurmaya çalışırsa bu kod başarısız olur.

Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:

  • Emülatörleri bir Firebase projesi oluşturmadan çalıştırabileceğiniz için kurulumu daha kolaydır
  • Kodunuz yanlışlıkla emüle edilmemiş (üretim) kaynakları çağırırsa veri değişikliği, kullanım ve faturalandırma söz konusu olmayacağından daha yüksek güvenlik
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

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

Android, Apple platformları ve Web SDK'ları

Cloud Storage for Firebase emülatörüyle etkileşime geçmek 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);
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);
} 

Emülatörü kullanarak Cloud Storage for Firebase etkinlikleri tarafından tetiklenen Cloud işlevlerini test etmek için ek kuruluma gerek yoktur. Cloud Storage for Firebase ve Cloud Functions emülatörleri çalışırken otomatik olarak birlikte çalışır.

Yönetici SDK'ları

FIREBASE_STORAGE_EMULATOR_HOST ortam değişkeni ayarlandığında Firebase Admin SDK'ları, 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ünün, Cloud Storage for Firebase emülatörünü otomatik olarak algıladığını unutmayın. 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'de Yönetici SDK'si için otomatik olarak ayarlanır.

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

Node.js Yönetici SDK'sı
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 verileri dışa aktarmanıza olanak tanır. Birim testlerinizde veya sürekli entegrasyon iş akışlarınızda kullanılacak temel bir veri kümesi tanımlayın, ardından bu verileri ekip arasında paylaşılmak üzere dışa aktarın.

firebase emulators:export ./dir

Testlerde, emülatör başlatılırken referans verileri içe aktarın.

firebase emulators:start --import=./dir

Emülatöre, kapanma sırasında verileri dışa aktarma talimatını vermek için bir dışa aktarma yolu belirtebilir veya sadece --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ı nedir?

Firebase için Cloud Storage emülatörü, istemci uygulamalarını test ederken Firebase API yüzey alanı açısından üretimle 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 edilmesiyle ilgili sınırlamalar mevcuttur. Firebase Yönetici SDK'ları Google Cloud API yüzeyini kullanır ve bu API'nin tüm uç noktaları emülasyonlu değildir. 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ım için de uygulanır, ancak bunların dışındaki hiçbir şey değildir. Önemli hariç tutmalar aşağıda listelenmiştir.

Google Cloud Storage ile arasındaki farklar

Storage emülatörünü de içeren Cloud Storage for Firebase ürünü, Firebase uygulamalarının geliştirilmesi için çok kullanışlı olan depolama nesnelerine odaklanan Google Cloud Storage (GCS) işlevselliğinin bir alt kümesini sağlar. Cloud Storage for Firebase, şu yönleriyle GCS'den ayrılır:

  • Cloud Storage for Firebase şu anda depolama alanı grupları oluşturmak, listelemek, almak veya silmek için Bucket API'lerini desteklememektedir.
  • Google Cloud Storage Objects API'de şu yöntemler desteklenir: copy, delete, get, insert, list, patch, rewrite, update.

Cloud IAM

Firebase Emulator Suite, IAM ile ilgili çalışma amaçlı davranışları kopyalamaya veya bunlara saygı göstermeye çalışmaz. Emülatörler, sağlanan Firebase Güvenlik Kurallarına uyar ancak IAM'nin normalde kullanılması gereken durumlarda (ör. Cloud Functions'ın hizmet hesabını çağırıp izinleri ayarlamak için kullanılır) emülatör yapılandırılamaz ve doğrudan yerel komut dosyası çalıştırmaya benzer şekilde geliştirici makinenizde küresel olarak kullanılabilen hesabı kullanır.

Pub/Sub bildirimleri

Cloud Storage for Firebase emülatörü, Cloud Pub/Sub emülatörüne 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 veri

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

Sonrasında ne olacak?