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 Firebase Local Emulator Suite için genel iş akışını kavradığınızı ve Ayrıca kurun ve yapılandırdığınız Local Emulator Suite ifadesini tıklayın ve CLI komutlarını inceleyin.

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 CLI çalıştırmasında Çalışma dizininizde firebase use. Ya da her emülatöre --project işaretini komutuna dokunun.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projeleri.

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).

Gerçek projelerde veritabanı örnekleri ve depolama alanı gibi canlı kaynaklar bulunur Firebase için oluşturduğunuz paketler, işlevler veya diğer kaynaklar belirler.

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

emüle etmediğiniz tüm ürünlerde uygulamalarınız ve kodunuz live kaynakla (veri tabanı örneği, depolama alanı) grup, işlev vb.) belirtin.

Demo

Demo Firebase projesinin gerçek bir Firebase yapılandırması yoktur ve canlı kaynak yok. Bu projelere genellikle codelab'ler veya eğiticidir.

Demo projeleri için proje kimlikleri demo- önekine sahiptir.

Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörler aracılığıyla gerçekleştirilir. Uygulamanız bir kaynakla etkileşim kurmaya çalışırsa çalışmadığı durumlarda 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, herhangi bir kod oluşturmadan da çalıştırabildiğiniz için kurulumu daha kolay Firebase projesi
  • Kodunuz yanlışlıkla emülasyonsuz bir kod çağırırsa daha yüksek güvenlik sağlar (üretim) kaynaklarında, veri değişikliği, kullanım ve faturalandırma ihtimali yoktur.
  • Gerektiğinde internet bağlantısı olmadığında çevrimdışı destek SDK yapılandırmanızı indirin.
ziyaret edin.

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

Android, Apple platformları ve Web SDK'ları

API'lerle etkileşimde bulunmak için uygulama içi yapılandırmanızı Cloud Storage for Firebase emülatörü aşağıdaki gibidir.

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);
} 

Cloud Storage for Firebase etkinlikleri tarafından tetiklenen Cloud işlevlerini test etmek için ek kuruluma gerek yoktur. emülatörü kullanabilirsiniz. Cloud Storage for Firebase ve Cloud Functions emülatörleri de çalışıyor; bu öğeler otomatik olarak birlikte çalışıyor.

Admin SDK

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

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

Cloud Functions emülatörünün, Test sırasında bu adımı atlayabilirsiniz için Cloud Storage for Firebase emülatörü Cloud Functions ile Cloud Storage for Firebase arasındaki entegrasyonlar emülatörleri kullanın. Ortam değişkeni, Yönetici SDK'sı için otomatik olarak ayarlanır. Cloud Storage for Firebase içinde.

Admin SDK kodunuzun şurada çalışan paylaşılan bir emülatöre bağlanmasını istiyorsanız: başka bir ortamda kullanmak istiyorsanız Firebase CLI'yı kullanarak ayarladığınız proje kimliğini belirtmeniz gerekir. Bir proje kimliğini doğrudan initializeApp adlı iş ortağına iletebilir veya GCLOUD_PROJECT ortam değişkeni.

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, verileri dışa aktarmanıza olanak tanır. örneğine döneceğim. Projenizde kullanılacak temel bir veri kümesi tanımlayın ve sürekli entegrasyon iş akışlarını analiz etmek ve paylaşmak üzere yüksek tutulması bakımından çok değerli.

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ı vermek için dışa aktarma yolunu kullanabilir veya --import öğesine geçirilen yolu kullanabilirsiniz. tıklayın.

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

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

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

İstemci uygulamalarını test etmek için Cloud Storage for Firebase emülatörü, Firebase API yüzey alanı bakımından neredeyse mükemmel. Tümü Firebase komutlarının normal Firebase SDK'ları (Web, Android ve Apple platformlarında).

Sunucu tarafı uygulamaların test edilmesiyle ilgili sınırlamalar mevcuttur. Firebase Admin SDK'ları Google Cloud API yüzeyini kullanın ve bu API'nin tüm uç noktaları emüle edilir. Genel bir kural olarak, istemci SDK'larından yapılabilecek her şey (dosya yükleme veya silme, meta verileri alma ve ayarlama) da uygulanır SDK'larının kullanımına yönelik değildir, ancak bunun dışındaki hiçbir şey kullanılamaz. Hariç tutulan önemli noktalar aşağıda listelenmiştir.

Google Cloud Storage ile arasındaki farklar

Storage emülatörü de dahil olmak üzere Cloud Storage for Firebase ürünü, depolama nesnelerine odaklanan Google Cloud Storage (GCS) işlevlerinin bir alt kümesi Firebase uygulamaları geliştirmek için çok kullanışlıdır. Cloud Storage for Firebase. GCS'den şu açılardan ayrılır:

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

Cloud IAM

Firebase Emulator Suite, verileri kopyalamaya veya ona Çalışma için IAM ile ilgili davranış. Emülatörler Firebase Güvenliği'ne bağlıdır Kurallar sağlanır ancak IAM'nin normalde kullanılacağı durumlarda (ör. Cloud Functions'ın hizmet hesabını ve dolayısıyla izinleri çağırmasını sağlar. emülatörü yapılandırılamaz ve şurada genel olarak mevcut hesabı kullanır: yerel bir komut dosyası çalıştırmaya benzer.

Pub/Sub bildirimleri

Cloud Storage for Firebase emülatörü Cloud ile entegre olmaz Pub/Sub emülatörü ve dolayısıyla depolama nesnesi değişiklikleri için kanallar/bildirimler. Önerilerimiz Cloud Functions doğrudan depolama alanını tetikler.

Paket düzeyinde meta veri

Cloud Storage for Firebase emülatörü hiçbir paket düzeyini desteklemiyor depolama sınıfı, paket düzeyinde CORS yapılandırması, etiketler ve veya saklama politikaları. Firebase bu desteği zaman içinde iyileştirmeyi hedeflemektedir.

Sonrasında ne olacak?