Uzantıları değerlendirmek için Uzantılar Emülatörü'nü kullanma

Uygulamanızda Extensions emülatörünü kullanmadan ö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.

Bu kılavuzda ayrıca Firebase Extensions ve bunları Firebase uygulamalarınızda nasıl kullanacağınızı bildiğiniz varsayılır.

Extensions emülatörüyle neler yapabilirim?

Extensions emülatörü sayesinde, uzantıları güvenli bir yerel ortamda yükleyip yönetebilir ve faturalandırma maliyetlerini en aza indirirken özelliklerini daha iyi anlayabilirsiniz. Öykünücü, uzantınızın işlevlerini yerel olarak çalıştırır. Buna Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication ve Pub/Sub için öykünücüleri kullanan arka plan etkinliğiyle tetiklenen işlevler ve Cloud Functions v2'de uygulanan Eventarc ile tetiklenen işlevler dahildir.

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.

Uzantı yükleme ve değerlendirme

Bir uzantının ihtiyaçlarınızı karşılayıp karşılamadığını değerlendirmek için Extensions emülatörünü kullanmak kolaydır.

Aşağıdaki iş akışı tüm uzantıları kapsasa da Trigger Email (firestore-send-email) uzantısıyla ilgilendiğinizi varsayalım. Yerel emülatörlerle çalıştırıldığında Trigger Email, Cloud Firestore ve Cloud Functions emülatörlerini otomatik olarak kullanır.

Bir uzantıyı yerel olarak değerlendirmek için:

  1. Uzantıyı yerel uzantılar manifestine ekleyin. Uzantı manifesti, uzantı örneklerinin ve yapılandırmalarının listesidir.

    firebase ext:install --local firebase/firestore-send-email

    Yukarıdaki komutu çalıştırdığınızda firebase/firestore-send-email uzantısının en yeni sürümünü yapılandırmanız ve yapılandırmayı manifest dosyasına kaydetmeniz istenir ancak yapılandırma projenize dağıtılmaz. Bu konu hakkında daha fazla bilgi için Manifestlerle uzantı yapılandırmasını yönetme başlıklı makaleyi inceleyin.

  2. Local Emulator Suite uygulamasını her zamanki gibi başlatın.

    firebase emulators:start

Şimdi, manifestinizde listelenen firestore-send-email uzantı örneğini kullanarak Local Emulator Suite, bu uzantının kaynak kodunu ~/.cache/firebase/extensions dizinine indirecek. Kaynaklar indirildikten sonra Local Emulator Suite başlatılır. Uzantının arka planda tetiklenen işlevlerinden herhangi birini tetikleyebilir ve uygulamanızı Local Emulator Suite ile bağlayarak uygulamanızla entegrasyonunu test edebilirsiniz.

E-posta dokümanları koleksiyonuna veri eklemek ve Trigger Email uzantısının gerektirdiği diğer arka uç kaynaklarını ayarlamak için Emulator Suite UI kullanabilirsiniz.

Alternatif olarak, sürekli entegrasyon iş akışları gibi etkileşimli olmayan test ortamlarında, uzantıyı değerlendirmek için gerekli Cloud Firestore verilerini dolduran ve işlevleri tetikleyen bir test komut dosyası yazabilirsiniz. Ardından, test komut dosyanızı yürütmek için Local Emulator Suite komutunu çağırırsınız:

firebase emulators:exec my-test.sh

Extensions emülatörüyle test etmenin üretimden farkı

Extensions emülatörü, uzantıları üretim deneyimine çok benzeyen bir şekilde test etmenize olanak tanır. Ancak üretim davranışından bazı farklılıklar vardır.

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.

Tetikleme türü sınırlaması

Şu anda Firebase Local Emulator Suite yalnızca HTTP isteğiyle tetiklenen işlevleri, uzantılar için Eventarc özel etkinlik tetikleyicilerini ve Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication ve Pub/Sub için arka plan etkinliğiyle tetiklenen işlevleri desteklemektedir. Diğer tetiklenen işlev türlerini kullanan uzantıları değerlendirmek için uzantınızı bir test Firebase projesine yüklemeniz gerekir.

Sonrasında ne olacak?