Uygulamanızı Cloud Functions öykünücüsü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ı gözden geçirdiğinizden emin olun.
Firebase projesi seçin
Firebase Local Emulator Suite, tek bir Firebase projesine yönelik ürünleri taklit eder.
Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce, CLI'de çalışma dizininizde firebase use
çalıştırın. Veya --project
bayrağını her emulator 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, oluşturduğunuz ve yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla). Gerçek projelerde veritabanı örnekleri, depolama grupları, işlevler veya 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örler çalıştırabilirsiniz. Taklit etmediğiniz tüm ürünler için uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama grubu, işlev vb.) etkileşime girecektir. |
Demo | Bir demo Firebase projesinde gerçek bir Firebase yapılandırması ve canlı kaynak yoktur. Bu projelere genellikle codelab'ler veya diğer eğitimler aracılığıyla erişilir. Demo projelerine ait proje kimlikleri | 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şim kurmaya çalışırsa bu kod başarısız olur. |
Mümkün olan her yerde demo projelerini kullanmanızı öneririz. Faydaları şunları içerir:
- Emülatörleri Firebase projesi oluşturmadan çalıştırabileceğiniz için daha kolay kurulum
- Kodunuzun yanlışlıkla öykünmemiş (üretim) kaynakları çağırması durumunda veri değişikliği, kullanım ve faturalandırma şansı olmayacağı için daha güçlü güvenlik
- SDK yapılandırmanızı indirmek için internete erişmenize gerek olmadığından daha iyi çevrimdışı destek.
Emülatörlerle konuşmak için uygulamanızı kullanın
Çağrılabilir işlevler için uygulamanızı kullanın
Prototip ve test faaliyetleriniz çağrılabilir arka uç işlevlerini içeriyorsa Cloud Functions for Firebase emülatörüyle etkileşimi şu şekilde yapılandırı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 functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Süratli
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
Web modular API
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web namespaced API
firebase.functions().useEmulator("127.0.0.1", 5001);
Uygulamanızı HTTPS işlevleri emülasyonu için kullanın
Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel öykünücüden sunulacaktır:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
Örneğin, varsayılan ana bilgisayar bağlantı noktası ve bölgesi ile basit bir helloWorld
işlevi şu adreste sunulacaktır:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
Arka planda tetiklenen işlevler emülasyonu için uygulamanızı kullanın
Cloud Functions öykünücüsü, aşağıdaki kaynaklardan arka planda tetiklenen işlevleri destekler:
- Gerçek Zamanlı Veritabanı emülatörü
- Cloud Firestore emülatörü
- Kimlik doğrulama emülatörü
- Pub/Sub emülatörü
Arka plan olaylarını tetiklemek için Emulator Suite kullanıcı arayüzünü kullanarak veya uygulamanızı veya test kodunuzu platformunuza yönelik SDK'yı kullanarak emülatörlere bağlayarak arka uç kaynaklarını değiştirin.
Uzantılar tarafından yayılan özel olaylara yönelik test işleyicileri
Firebase Extensions özel olaylarını Cloud Functions v2 ile işlemek üzere uyguladığınız işlevler için Cloud Functions öykünücüsü, Eventarc tetikleyicilerini desteklemek üzere Eventarc öykünücüsüyle eşleşir.
Olayları yayan uzantılar açısından özel olay işleyicilerini test etmek için Cloud Functions ve Eventarc öykünücülerini yüklemeniz gerekir.
Cloud Functions çalışma zamanı, Eventarc öykünücüsü çalışıyorsa mevcut işlemde EVENTARC_EMULATOR
ortam değişkenini localhost:9299
olarak ayarlar. Firebase Yönetici SDK'ları, EVENTARC_EMULATOR
ortam değişkeni ayarlandığında otomatik olarak Eventarc öykünücüsüne bağlanır. Varsayılan bağlantı noktasını Yerel Emulator Suite'i Yapılandır bölümünde tartışıldığı gibi değiştirebilirsiniz.
Ortam değişkenleri doğru şekilde yapılandırıldığında Firebase Admin SDK, olayları otomatik olarak Eventarc öykünücüsüne gönderir. Buna karşılık Eventarc emülatörü, kayıtlı işleyicileri tetiklemek için Cloud Functions emülatörüne geri çağrı yapar.
İşleyici yürütmeyle ilgili ayrıntılar için Emulator Suite kullanıcı arayüzündeki İşlev günlüklerini kontrol edebilirsiniz.
Yerel bir test ortamı yapılandırma
İşlevleriniz dotenv tabanlı ortam yapılandırmasına dayanıyorsa, bu davranışı yerel test ortamınızda taklit edebilirsiniz.
Yerel bir Cloud Functions öykünücüsü kullanırken, bir .env.local
dosyası oluşturarak projeniz için ortam değişkenlerini geçersiz kılabilirsiniz. .env.local
içeriği .env
ve projeye özel .env
dosyasına göre önceliklidir.
Örneğin bir proje, geliştirme ve yerel test için biraz farklı değerler içeren şu üç dosyayı içerebilir:
.env | .env.dev | .env.local |
GEZEGEN=Dünya İZLEYİCİ=İnsanlar | KİTLE=Geliştirici İnsanlar | İZLEYİCİ=Yerel İnsanlar |
Yerel bağlamda başlatıldığında öykünücü, ortam değişkenlerini gösterildiği gibi yükler:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
Cloud Functions emülatöründeki sırlar ve kimlik bilgileri
Cloud Functions öykünücüsü , hassas yapılandırma bilgilerini depolamak ve bunlara erişmek için gizli dizilerin kullanımını destekler. Varsayılan olarak emülatör, uygulamanın varsayılan kimlik bilgilerini kullanarak üretim sırlarınıza erişmeye çalışacaktır. CI ortamları gibi belirli durumlarda emülatör, izin kısıtlamaları nedeniyle gizli değerlere erişemeyebilir.
Ortam değişkenleri için Cloud Functions emülatör desteğine benzer şekilde, bir .secret.local
dosyası oluşturarak gizli dizi değerlerini geçersiz kılabilirsiniz. Bu, özellikle gizli değere erişiminiz yoksa, işlevlerinizi yerel olarak test etmenizi kolaylaştırır.
Bulut İşlevlerini test etmek için başka hangi araçlar mevcut?
Cloud Functions öykünücüsü diğer prototip ve test araçlarıyla desteklenir:
- Etkileşimli, yinelemeli işlevlerin prototiplenmesine ve geliştirilmesine olanak tanıyan Bulut İşlevleri kabuğu. Kabuk, geliştirme için REPL tarzı bir arayüze sahip Bulut İşlevleri öykünücüsünü kullanır. Cloud Firestore veya Realtime Database emülatörleriyle entegrasyon sağlanmamaktadır. Kabuğu kullanarak verilerle alay eder ve Local Emulator Suite'in şu anda desteklemediği Analytics, Remote Config ve Crashlytics ürünleriyle etkileşimi simüle etmek için işlev çağrıları gerçekleştirirsiniz.
- Bulut İşlevleri için Firebase Test SDK'sı, işlev geliştirmeye yönelik mocha çerçevesine sahip bir Node.js. Aslında Bulut İşlevleri Test SDK'sı, Bulut İşlevleri kabuğunun üzerinde otomasyon sağlar.
Bulut İşlevleri kabuğu ve Bulut İşlevleri Test SDK'sı hakkında daha fazla bilgiyi Test işlevlerini etkileşimli olarak ve Bulut İşlevlerinin Birim Testi bölümünde bulabilirsiniz.
Cloud Functions öykünücüsünün üretimden farkı nedir?
Cloud Functions öykünücüsü, kullanım durumlarının çoğunda üretim ortamına oldukça yakındır. Node çalışma zamanındaki her şeyin üretime mümkün olduğunca yakın olmasını sağlamak için kapsamlı çalışmalar yaptık. Ancak öykünücü, kapsayıcıya alınmış üretim ortamının tamamını taklit etmez; dolayısıyla işlev kodunuz gerçekçi bir şekilde yürütülürken ortamınızın diğer yönleri (yani yerel dosyalar, işlevlerin çökmesinden sonraki davranışlar vb.) farklı olacaktır.
Bulut IAM
Firebase Emulator Suite, çalıştırmak için IAM ile ilgili herhangi bir davranışı kopyalamaya veya bunlara uymaya çalışmaz. Emülatörler sağlanan Firebase Güvenlik Kurallarına uyar, ancak normalde IAM'in kullanılacağı durumlarda (örneğin, hizmet hesabını çağıran Cloud Functions'ı ve dolayısıyla izinleri ayarlamak için), emülatör yapılandırılamaz ve geliştirici makinenizde genel olarak mevcut olan hesabı kullanır. yerel bir betiği doğrudan çalıştırmaya benzer.
Bellek ve işlemci kısıtlamaları
Emülatör, işlevleriniz için bellek veya işlemci kısıtlamaları uygulamaz. Ancak emülatör, timeoutSeconds
çalışma zamanı argümanı aracılığıyla zaman aşımı işlevlerini destekler.
Öykünücüde işlevler çalıştırıldığında, işlev yürütme süresinin üretimden farklı olabileceğini unutmayın. Öykünücüyle işlevleri tasarlayıp test ettikten sonra, yürütme sürelerini doğrulamak için üretimde sınırlı testler çalıştırmanızı öneririz.
Yerel ve üretim ortamlarındaki farklılıklara yönelik planlama
Emülatör yerel makinenizde çalıştığından, uygulamalar, yerleşik programlar ve yardımcı programlar açısından yerel ortamınıza bağlıdır.
Cloud Functions geliştirme için yerel ortamınızın Google üretim ortamından farklı olabileceğini unutmayın:
Üretim ortamını simüle etmek için yerel olarak yüklediğiniz uygulamalar (örneğin, bu eğitimdeki ImageMagick), özellikle farklı bir sürüme ihtiyacınız varsa veya Linux dışı bir ortamda geliştirme yapıyorsanız, davranış açısından üretimden farklı olabilir. Eksik programın kendi ikili kopyasını işlev dağıtımınızın yanında dağıtmayı düşünün.
Benzer şekilde, yerleşik yardımcı programlar (örneğin,
ls
,mkdir
gibi kabuk komutları), özellikle Linux dışı bir ortamda (örneğin, macOS) geliştirme yapıyorsanız, üretimde mevcut olan sürümlerden farklı olabilir. Yerel komutlara yalnızca düğüm alternatifleri kullanarak veya dağıtımınızla birlikte paketlenecek Linux ikili dosyaları oluşturarak bu sorunu çözebilirsiniz.
Yeniden deneniyor
Cloud Functions öykünücüsü, başarısızlık durumunda işlevlerin yeniden denenmesini desteklemez.
Sırada ne var?
- Özel olarak seçilmiş bir dizi video ve ayrıntılı nasıl yapılır örnekleri için Firebase Emulators Eğitim Oynatma Listesini takip edin.
- Firebase için Cloud Functions öykünücüsü hakkında daha fazla bilgi edinmek için İşlevleri yerel olarak çalıştırma bölümüne bakın.