Uygulamanızı Cloud Functions Emulator'a bağlama

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- ö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

Ç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?