Uygulamanızı Cloud Functions emülatörüne bağlamadan önce Firebase Local Emulator Suite iş akışını genel olarak anlarsınız, 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 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.
Emülatörlerle konuşmak için uygulamanızı kullanın
Çağrılabilir işlevler için uygulamanızı kullanın
Prototipiniz ve test etkinlikleriniz çağrılanabilir arka uç işlevleri 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);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
Uygulamanızda HTTPS işlevleri emülasyonu için araç kullanma
Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel emülatörden sunulur:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
Örneğin, varsayılan ana makine bağlantı noktası ve bölgeye sahip basit bir helloWorld
işlevi şu konumda sunulur:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Uygulamanızda görev sırası işlevlerinin emülasyonunu kullanın
Emülatör, tetikleyiciye göre otomatik olarak emüle edilmiş görev sıraları oluşturur
tanımlar ve Yönetici SDK'sı aşağıdaki durumlarda sıraya konulan istekleri emülatöre yeniden yönlendirir.
CLOUD_TASKS_EMULATOR_HOST
ortamı üzerinden çalıştığını algılar
değişkenine eklenmelidir.
Üretimde kullanılan sevk sisteminin bir tanesi emülatörde uygulanır, bu nedenle emülasyon üretim ortamlarını doğru şekilde yansıtması için esnek bir yöntem sağlar. emülatör, görevlerin dağıtıldığı hızın üst sınırlarını sağlar ve yeniden denendi.
Arka planda tetiklenen işlevler emülasyonu için uygulamanızda kullanın
Cloud Functions emülatörü, aşağıdaki kaynaklardan gelen arka planda tetiklenen işlevleri destekler:
- Realtime Database emülatörü
- Cloud Firestore emülatörü
- Authentication emülatörü
- Pub/Sub emülatörü
- Firebase uyarıları emülatörü
Arka plan etkinliklerini tetiklemek için arka uç kaynaklarını Emulator Suite UI aracılığıyla veya uygulamanızı ya da test kodunuzu emülatörlere bağlayarak kullanmanız önerilir.
Uzantılar tarafından yayınlanan özel etkinlikler için test işleyicileri
Firebase Extensions özel etkinliği işlemek üzere uyguladığınız işlevler için Cloud Functions v2 ile Cloud Functions emülatörü Destekleyen Eventarc emülatörü Eventarc tetikleyicileri.
Etkinlik yayan uzantılarda özel etkinlik işleyicileri test etmek için Cloud Functions ve Eventarc emülatörleri.
Cloud Functions çalışma zamanı, EVENTARC_EMULATOR
ortamını ayarlar
Eventarc emülatörü, geçerli işlemde localhost:9299
değerini
çalışıyor. Firebase Admin SDK cihazları Eventarc'a otomatik olarak bağlanır
emülatörü (EVENTARC_EMULATOR
) ortam değişkeni ayarlandığında emülatör olarak ayarlanır. Şunları yapabilirsiniz:
varsayılan bağlantı noktasını Local Emulator Suite yapılandırması altında açıklandığı şekilde değiştirin.
Ortam değişkenleri doğru şekilde yapılandırıldığında Firebase Admin SDK , etkinlikleri otomatik olarak Eventarc emülatörüne gönderir. Buna karşılık Eventarc emülatör, herhangi bir öğeyi tetiklemek için Cloud Functions emülatörüne kayıtlı işleyicileri.
Ayrıntılı bilgi için Emulator Suite UI adresindeki Functions günlüklerini inceleyebilirsiniz. işleyicinin yürütülmesinden kaynaklanır.
Yerel test ortamı yapılandırma
İşlevleriniz dotenv tabanlıysa ortam yapılandırmasını kullanarak yerel test ortamınızda bu davranışı emüle edebilirsiniz.
Yerel bir Cloud Functions emülatörü kullanırken ortamı geçersiz kılabilirsiniz.
değişkenlerini kullanarak projeniz için .env.local
dosya oluşturun. İçindekiler
.env.local
, .env
dosyasına ve projeye özel .env
dosyasına göre önceliklidir.
Örneğin bir projede, üzerinde geliştirme ve yerel test için farklı değerler:
.env
|
.env.dev
|
.env.local
|
PLANET=Dünya
KİTLE=İnsanlar |
KİTLE=Dev İnsanlar | KİTLE=Yerel İnsanlar |
Emülatör, yerel bağlamda başlatıldığında ortamı yükler değişkenlerini aşağıda gösterilmiştir:
$ 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 gizli anahtarlar ve kimlik bilgileri
Cloud Functions emülatörü, gizli anahtarların şu amaçlarla kullanımını destekler: hassas yapılandırma bilgilerini depolama ve bunlara erişme. Varsayılan olarak emülatör, üretim gizli anahtarlarınıza uygulama varsayılan kimlik bilgileri ile erişemez. CI ortamları gibi belirli durumlarda emülatör, gizli anahtar değerlerinin kurtarılmasını sağlayın.
Ortam değişkenleri için Cloud Functions emülatör desteğine benzer şekilde,
.secret.local
dosyası oluşturarak gizli anahtar değerlerini geçersiz kılabilirsiniz. Bu da,
özellikle de erişiminiz yoksa işlevlerinizi yerel olarak test etmenizi
anahtar değerine ekleyin.
Cloud Functions uygulamasını test etmek için başka hangi araçlar var?
Cloud Functions emülatörü, başka bir prototip ve test ile desteklenir. araçlar:
- Etkileşimli ve yinelemeli işlevlere olanak tanıyan Cloud Functions kabuğu prototip oluşturma ve geliştirme. Kabuk, Cloud Functions emülatörünü bir REPL tarzı arayüz vardı. Cloud Firestore veya Realtime Database emülatörleri sağlanır. Kabuğu kullanarak bir şekilde oluşturulan ürünlerle etkileşimi simüle etmek için, sahte veriler oluşturabilir ve Local Emulator Suite şu anda desteklenmiyor: Analytics, Remote Config ve Crashlytics.
- Cloud Functions için Firebase Test SDK'sı, Mocha çerçevesi içeren Node.js dört önemli adım var. Cloud Functions Test SDK'sı aslında en üst düzeye çıkarmanızı sağlar.
Cloud Functions kabuğu ve Cloud Functions Test SDK'sı hakkında daha fazla bilgi İşlevleri etkileşimli olarak test etme ve Cloud Functions birim testi.
Cloud Functions emülatörünün üretimden farkı nedir?
Cloud Functions emülatörü, üretim ortamına oldukça yakın 10 temel yöntemi tercih ettik. E-ticaret sitelerinde yayıncıların içinde üretime olabildiğince yakın olması gerekir. Ancak emülatör, container mimarisine alınmış üretim ortamını tam anlamıyla Bu nedenle, fonksiyon kodunuz gerçekçi olarak çalışacak olsa da, (ör. yerel dosyalar, işlevler kilitlendikten sonraki davranış vb.) gösterir.
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.
Bellek ve işlemci kısıtlamaları
Emülatör,
işlevlerine dahildir. Ancak emülatör,
timeoutSeconds
çalışma zamanı bağımsız değişkeni.
İşlevler aşağıdaki durumlarda, işlev yürütme süresinin üretimden farklı olabileceğini unutmayın. çalıştırmanız gerekir. Hedeflerinizi belirleyip test ettikten fonksiyonlarının kullanımını doğrulamak için üretimde sınırlı testler çalıştırırsınız yürütme süresi kadardır.
Yerel ve üretim ortamlarındaki farklılıklar için planlama
Emülatör yerel makinenizde çalıştığından yerel makinenize bağlıdır yerleşik programlar ve yardımcı programlar için bir ortam sunar.
Cloud Functions uygulamasını geliştirmek için yerel ortamınızın Google üretim ortamından farklı olduğunu unutmayın:
Üretim ortamını simüle etmek için yerel olarak yüklediğiniz uygulamalar (ör. Bu eğitimdeki ImageMagick) Kullanım açısından üretimden farklı olabilir, özellikle de farklı bir veya Linux olmayan bir ortamda geliştirmeniz gerekir. Kendi işlev dağıtımınızın yanı sıra eksik programın ikili kopyasıdır.
Benzer şekilde, yerleşik yardımcı programlar (ör.
ls
,mkdir
gibi kabuk komutları) üretimde sunulan sürümlerden farklı olabilir, özellikle de Linux olmayan bir ortam (ör. macOS). Bu sorunu çözmek için Yerel komutların yerine yalnızca düğüm alternatifleri veya paketinden yararlanmaya devam edebilirsiniz.
Tekrar deneniyor
Cloud Functions emülatörü, hata durumunda işlevlerin yeniden denenmesini desteklemez.
Sonrasında ne olacak?
- Özenle seçilmiş bir video seti ve ayrıntılı "Nasıl yapılır?" örnekleri için Firebase Emulators Eğitimi Oynatma Listesi'ni takip edin.
- Cloud Functions for Firebase emülatörü hakkında daha fazla bilgi edinmek için İşlevleri yerel olarak çalıştırma sayfasına göz atın.