Check out what’s new from Firebase at Google I/O 2022. Learn more

Uygulamanızı Cloud Functions Emulator'a bağlayın

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, tek bir Firebase projesi için ürünleri öykünür.

Kullanılacak projeyi seçmek için, öykünücüleri başlatmadan önce, CLI'de çalışma dizininizde firebase use . Veya --project bayrağını her bir öykünücü komutuna iletebilirsiniz.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin öykünmesini destekler.

Proje tipi Özellikler Emülatörlerle kullanın
Gerçek

Gerçek bir Firebase projesi, sizin oluşturduğunuz ve yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla).

Gerçek projeler, veritabanı örnekleri, depolama paketleri, işlevler veya o Firebase projesi için kurduğunuz 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ı örneği, depolama grubu, işlev vb.) etkileşime girer.

Demo

Bir demo Firebase projesinin gerçek bir Firebase konfigürasyonu ve canlı kaynakları yoktur. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir.

Demo projeleri için proje kimlikleri demo ön demo- sahiptir.

Demo Firebase projeleriyle çalışırken, uygulamalarınız ve kodunuz yalnızca öykünücülerle etkileşime girer. Uygulamanız, bir ö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 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 taklit edilmeyen (üretim) kaynakları çalıştırırsa, veri değişikliği, kullanım ve faturalandırma şansı yoktur.
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

Emülatörlerle konuşmak için uygulamanızı enstrümantal edin

Uygulamanızı çağrılabilir işlevler için kullanın

Prototip ve test etkinlikleriniz çağrılabilir arka uç işlevleri içeriyorsa Firebase için Cloud Functions öykünücüsüyle etkileşimi şu şekilde yapılandırın:

Android
        // 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://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

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 sunulacaktır:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Örneğin, varsayılan ana bilgisayar bağlantı noktasına ve bölgeye sahip basit bir helloWorld işlevi şu adreste sunulur:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Uygulamanızı arka planda tetiklenen işlev ö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 öykünücüsü
  • Pub/Sub öykünücüsü

Arka plan olaylarını tetiklemek için uygulamanızı veya test kodunuzu platformunuz için SDK'yı kullanarak öykünücülere bağlayın.

Yerel bir test ortamı yapılandırın

İş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ı ayarlayarak projeniz için ortam değişkenlerini geçersiz kılabilirsiniz. .env içeriği, .env.local ve projeye özgü .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
PLANET=Dünya

İZLEYİCİ=İnsanlar

İZLEYİCİ=Dev İ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 öykünücüsünde gizli diziler 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, izin kısıtlamaları nedeniyle öykünücü gizli değerlere erişemeyebilir.

Ortam değişkenleri için Cloud Functions öykünücü 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 ö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 Cloud Functions öykünücüsünü kullanır. Cloud Firestore veya Realtime Database öykünücüleriyle entegrasyon sağlanmaz. Shell'i 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.
  • Cloud Functions için Firebase Test SDK'sı, işlev geliştirme için mocha çerçevesine sahip bir Node.js. Aslında, Bulut İşlevleri Testi 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 Etkileşimli olarak Test işlevleri ve Bulut İşlevlerinin Birim testi bölümünde bulabilirsiniz.

Cloud Functions öykünücüsünün üretimden farkı

Cloud Functions öykünücüsü, 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 üretime mümkün olduğunca yakın olmasını sağlamak için kapsamlı çalışmalar yaptık. Ancak, öykünücü tam kapsayıcılı üretim ortamı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 (yani yerel dosyalar, işlevler çöktükten sonraki davranış vb.) farklı olacaktır.

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 bağlıdır, ancak örneğin Bulut İşlevlerini çağıran hizmet hesabını ve dolayısıyla izinleri ayarlamak için IAM'nin normal olarak 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ını zorlamaz. 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, 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ı sürümlere ihtiyaç duyuyorsanız veya Linux dışı bir ortamda geliştiriyorsanız, davranış açısından üretimden farklı olabilir. İşlev dağıtımınızla birlikte eksik programın kendi ikili kopyasını 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ştiriyorsanız, üretimde bulunan sürümlerden farklı olabilir. Yerel komutlara yalnızca Düğüm alternatiflerini kullanarak veya dağıtımınızla birlikte paketlenecek Linux ikili dosyaları oluşturarak bu sorunu çözebilirsiniz.

yeniden deneniyor

Bulut İşlevleri öykünücüsü, başarısızlık durumunda işlevlerin yeniden denenmesini desteklemez.

Sıradaki ne?