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 kurup yapılandırdığınızdan ve CLI komutlarını gözden geçirdiğinizden emin olun.
Bir Firebase projesi seçin
Firebase Local Emulator Suite, ürünleri tek bir Firebase projesi için taklit eder.
Kullanılacak projeyi seçmek için, öykünücüleri başlatmadan önce, CLI'da çalışma dizininizdeki firebase use
. Veya --project
bayrağını her emülatör 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 sizin oluşturup yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla). Gerçek projeler, veritabanı örnekleri, depolama grupları, işlevler veya o Firebase projesi için ayarladığınız diğer kaynaklar gibi canlı kaynaklara sahiptir. | Gerçek Firebase projeleriyle çalışırken, desteklenen ürünlerin herhangi biri veya tümü için öykünücüler çalıştırabilirsiniz. Taklit etmediğiniz tüm ürünler için uygulamalarınız ve kodunuz, canlı kaynakla (veritabanı eşgörünümü, depolama grubu, işlev vb.) etkileşime girer. |
Demo | Bir demo Firebase projesinde gerçek bir Firebase yapılandırması ve canlı kaynak yoktur. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir. Demo projeleri için proje kimliklerinde | 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şime girmeye çalışırsa, bu kod başarısız olur. |
Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Avantajlar şunları içerir:
- Bir Firebase projesi oluşturmadan öykünücüleri çalıştırabileceğiniz için daha kolay kurulum
- Daha güçlü güvenlik, çünkü kodunuz yanlışlıkla öykünülmemiş (üretim) kaynakları çalıştırırsa veri değişikliği, kullanım ve faturalandırma şansı olmaz
- SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.
Öykünücülerle konuşmak için uygulamanızı kullanın
Çağrılabilir işlevler için uygulamanızı donatın
Prototip ve test etkinlikleriniz çağrılabilir arka uç işlevleri içeriyorsa Cloud Functions for Firebase emülatörü ile 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().useEmulator(withHost: "localhost", port: 5001)
Web modular API
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "localhost", 5001);
Web namespaced API
firebase.functions().useEmulator("localhost", 5001);
Uygulamanızı HTTPS işlevleri öykünmesi için kullanın
Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel öykünücüden sunulur:
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 sunulur:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
Uygulamanızı arka planda tetiklenen işlevler öykünmesi için kullanın
Cloud Functions öykünücüsü, aşağıdaki kaynaklardan arka planda tetiklenen işlevleri destekler:
- Gerçek Zamanlı Veritabanı öykünücüsü
- Cloud Firestore öykünücüsü
- Kimlik doğrulama emülatörü
- Pub/Sub emülatörü
Arka plan olaylarını tetiklemek için, Emulator Suite kullanıcı arabirimini kullanarak veya uygulamanızı veya test kodunuzu platformunuz için SDK'yı kullanarak öykünücülere bağlayarak arka uç kaynaklarını değiştirin.
Uzantılar tarafından yayılan özel olaylar için işleyicileri test edin
Firebase Extensions özel olaylarını Cloud Functions v2 ile işlemek için uyguladığınız işlevler için Cloud Functions öykünücüsü, Eventarc tetikleyicilerini desteklemek için Eventarc öykünücüsü ile eşleşir.
Olayları yayan uzantılar için özel olay işleyicileri test etmek üzere 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. EVENTARC_EMULATOR
ortam değişkeni ayarlandığında, Firebase Admin SDK'ları otomatik olarak Eventarc öykünücüsüne bağlanır. Varsayılan bağlantı noktasını Yerel Öykünücü Paketini Yapılandır altında açıklandığı gibi değiştirebilirsiniz.
Ortam değişkenleri düzgün bir ş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 öykünücüsü, herhangi bir kayıtlı işleyiciyi tetiklemek için Bulut İşlevleri öykünücüsüne geri arama yapar.
İşleyici yürütmeyle ilgili ayrıntılar için Emulator Suite kullanıcı arabirimindeki İşlevler günlüklerini kontrol edebilirsiniz.
Yerel bir test ortamı yapılandırın
İşlevleriniz dotenv tabanlı ortam yapılandırmasına bağlıysa, bu davranışı yerel test ortamınızda taklit edebilirsiniz.
Yerel bir Bulut İşlevleri öykünücüsü kullanırken, bir .env.local
dosyası ayarlayarak projeniz için ortam değişkenlerini geçersiz kılabilirsiniz. .env.local
içeriği, .env
ve projeye özgü .env
dosyasından önceliklidir.
Örneğin, bir proje, geliştirme ve yerel test için biraz farklı değerler içeren bu üç dosyayı içerebilir:
.env | .env.dev | .env.local |
PLANET=Dünya KİTLE=İnsanlar | KİTLE=Geliştirici İnsanlar | KİTLE=Yerel İnsanlar |
Öykünücü, yerel bağlamda başlatıldığında, 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 öykünücü, uygulama varsayılan kimlik bilgilerini kullanarak üretim sırlarınıza erişmeye çalışır. CI ortamları gibi belirli durumlarda öykünücü, 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ı ayarlayarak 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.
Cloud Functions'ı test etmek için başka hangi araçlar var?
Cloud Functions emülatörü, diğer prototip ve test araçlarıyla desteklenir:
- Etkileşimli, yinelemeli işlevlerin prototip oluşturmasına ve geliştirilmesine izin veren 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 öykünücüleri ile entegrasyon sağlanmaz. Kabuğu kullanarak, Local Emulator Suite'in şu anda desteklemediği ürünlerle etkileşimi simüle etmek için verilerle alay eder ve işlev çağrıları gerçekleştirirsiniz: Analytics, Remote Config ve Crashlytics.
- Firebase Test SDK for Cloud Functions, işlev geliştirmeye yönelik mocha çerçevesine sahip bir Node.js. Aslında Cloud Functions Test SDK, Cloud Functions kabuğunun üzerinde otomasyon sağlar.
Cloud Functions kabuğu ve Cloud Functions Test SDK'sı hakkında daha fazla bilgiyi etkileşimli olarak Test işlevlerinde ve Cloud Functions'ın Birim testinde bulabilirsiniz.
Cloud Functions öykünücüsünün üretimden farkı nedir?
Bulut İşlevleri emülatörü, kullanım durumlarının çoğu için üretim ortamına oldukça yakındır. Düğüm çalışma zamanındaki her şeyin mümkün olduğunca üretime yakın olmasını sağlamak için kapsamlı bir çalışma yaptık. Ancak öykünücü, kapsayıcılı üretim ortamının tamamını taklit etmez, bu nedenle işlev kodunuz gerçekçi bir şekilde yürütülürken ortamınızın diğer yönleri (ör. yerel dosyalar, işlev çökmelerinden sonraki davranış vb.) farklılık gösterecektir.
Bulut IAM'si
Firebase Emulator Suite, çalıştırmak için IAM ile ilgili herhangi bir davranışı kopyalamaya veya bunlara uymaya çalışmaz. Öykünücüler, sağlanan Firebase Güvenlik Kurallarına uyar, ancak örneğin, hizmet hesabını ve dolayısıyla izinleri çağıran Bulut İşlevlerini ayarlamak için IAM'nin normalde kullanılacağı durumlarda, öykünücü yapılandırılamaz ve geliştirici makinenizde küresel olarak kullanılabilen hesabı kullanır. doğrudan yerel bir betiği çalıştırmaya benzer.
Bellek ve işlemci kısıtlamaları
Öykünücü, işlevleriniz için bellek veya işlemci kısıtlamaları uygulamaz. Ancak öykünücü, timeoutSeconds
çalışma zamanı bağımsız değişkeni aracılığıyla zaman aşımı işlevlerini destekler.
İşlevler öykünücüde ç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ıkları planlama
Öykünücü yerel makinenizde çalıştığından, uygulamalar ve yerleşik programlar ve yardımcı programlar için 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 kurduğunuz uygulamalar (örneğin, bu eğitimdeki ImageMagick), özellikle farklı bir sürüme ihtiyacınız varsa veya Linux olmayan bir ortamda geliştiriyorsanız, üretimden farklı davranabilir. İşlev dağıtımınızın yanı sıra, kayıp programın kendi ikili kopyanızı dağıtmayı düşünün.
Benzer şekilde, yerleşik yardımcı programlar (örneğin,
ls
,mkdir
gibi kabuk komutları), özellikle Linux olmayan bir ortamda (örneğin, macOS) geliştirme yapıyorsanız, üretimde mevcut olan sürümlerden farklı olabilir. Yerel komutlara yalnızca Düğüm alternatiflerini kullanarak veya dağıtımınızla 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?
- Seçilmiş bir dizi video ve ayrıntılı nasıl yapılır örnekleri için Firebase Emülatörleri Eğitim Oynatma Listesi'ni izleyin.
- Firebase emülatörü için Cloud Functions hakkında daha fazla bilgiyi İşlevleri yerel olarak çalıştır bölümünden öğrenin.