İşlevleri yönetme


İşlevleri Firebase KSA komutlarını kullanarak veya işlevlerinizin kaynak kodunda çalışma zamanı seçeneklerini ayarlayarak dağıtabilir, silebilir ve değiştirebilirsiniz.

İşlevleri dağıtma

İşlevleri dağıtmak için şu Firebase KSA komutunu çalıştırın:

firebase deploy --only functions

Varsayılan olarak Firebase CLI, kaynağınızdaki tüm işlevleri aynı anda dağıtır. Projenizde 5'ten fazla işlev varsa yalnızca düzenlediğiniz işlevleri dağıtmak için --only işaretini belirli işlev adlarıyla kullanmanızı öneririz. Bu şekilde belirli işlevleri dağıtmak dağıtım sürecini hızlandırır ve dağıtım kotalarına takılmanızı önler. Örneğin:

firebase deploy --only functions:addMessage,functions:makeUppercase

Çok sayıda işlev dağıtırken standart kotayı aşabilir ve HTTP 429 veya 500 hata mesajları alabilirsiniz. Bu sorunu çözmek için işlevleri 10 veya daha az sayıda grup halinde dağıtın.

Kullanılabilir komutların tam listesi için Firebase CLI referansına göz atın.

Varsayılan olarak Firebase CLI, kaynak kodu için functions/ klasörüne bakar. Dilerseniz kod tabanlarını veya birden fazla dosya grubunu işlevlere göre düzenleyebilirsiniz.

İşlevleri silin

Daha önce dağıtılan işlevleri aşağıdaki yöntemlerle silebilirsiniz:

  • functions:delete ile Firebase KSA'sında açıkça
  • Google Cloud konsolunda açıkça etkinleştirin.
  • Dağıtım öncesinde işlevi kaynaktan kaldırarak dolaylı olarak.

Tüm silme işlemleri, işlevi üretimden kaldırmadan önce onaylamanızı ister.

Firebase CLI'de açık işlev silme, işlev gruplarının yanı sıra birden fazla bağımsız değişkeni destekler ve belirli bir bölgede çalışan bir işlev belirtmenize olanak tanır. Ayrıca onay istemini geçersiz kılabilirsiniz.

# Delete all functions that match the specified name in all regions.
firebase functions:delete myFunction
# Delete a specified function running in a specific region.
firebase functions:delete myFunction --region us-east-1
# Delete more than one function
firebase functions:delete myFunction myOtherFunction
# Delete a specified functions group.
firebase functions:delete groupA
# Bypass the confirmation prompt.
firebase functions:delete myFunction --force

Örtülü işlev silme ile firebase deploy, kaynağınızı ayrıştırır ve dosyadan kaldırılan tüm işlevleri üretimden kaldırır.

Bir işlevin adını, bölgesini veya tetikleyicisini değiştirme

Üretim trafiğini yöneten işlevlerin bölgelerini veya tetikleyicisini yeniden adlandırıyor ya da değiştiriyorsanız değişiklik sırasında etkinlikleri kaybetmemek için bu bölümdeki adımları uygulayın. Bu adımları uygulamadan önce, işlevinizin hem yeni hem de eski sürümü değişiklik sırasında aynı anda çalışacağından işlevinizin tekil olduğundan emin olun.

İşlevleri yeniden adlandırma

Bir işlevi yeniden adlandırmak için kaynağınızda işlevin yeniden adlandırılmış yeni bir sürümünü oluşturun ve ardından iki ayrı dağıtım komutu çalıştırın. İlk komut, yeni adlandırılmış işlevi dağıtır ve ikinci komut, daha önce dağıtılan sürümü kaldırır. Örneğin, yeniden adlandırmak istediğiniz bir HTTP tetiklemeli webhook'unuz varsa kodu aşağıdaki gibi düzeltin:

Node.js

// before
const {onRequest}  = require('firebase-functions/v2/https');

exports.webhook = onRequest((req, res) => {
    res.send("Hello");
});

// after
const {onRequest}  = require('firebase-functions/v2/https');

exports.webhookNew = onRequest((req, res) => {
    res.send("Hello");
});

Python

# before
from firebase_functions import https_fn

@https_fn.on_request()
def webhook(req: https_fn.Request) -> https_fn.Response:
    return https_fn.Response("Hello world!")

# after
from firebase_functions import https_fn

@https_fn.on_request()
def webhook_new(req: https_fn.Request) -> https_fn.Response:
    return https_fn.Response("Hello world!")

Ardından yeni işlevi dağıtmak için aşağıdaki komutları çalıştırın:

# Deploy new function
firebase deploy --only functions:webhookNew

# Wait until deployment is done; now both functions are running

# Delete webhook
firebase functions:delete webhook

Bir işlevin bölgesini veya bölgelerini değiştirme

Üretim trafiğini yöneten bir işlev için belirtilen bölgeleri değiştiriyorsanız aşağıdaki adımları sırayla uygulayarak etkinlik kaybını önleyebilirsiniz:

  1. İşlevi yeniden adlandırın ve bölgesini veya bölgelerini istediğiniz gibi değiştirin.
  2. Yeniden adlandırılan işlevi dağıtın. Bu işlem, her iki bölge grubunda da geçici olarak aynı kodun çalıştırılmasına neden olur.
  3. Önceki işlevi silin.

Örneğin, şu anda us-central1'un varsayılan işlev bölgesinde bulunan ve Cloud Firestore tarafından tetiklenen bir işleviniz varsa ve bu işlevi asia-northeast1'ye taşımak istiyorsanız önce işlevi yeniden adlandırmak ve bölgeyi düzeltmek için kaynak kodunuzu değiştirmeniz gerekir.

Node.js

// before
exports.firestoreTrigger = onDocumentCreated(
  "my-collection/{docId}",
  (event) => {},
);

// after
exports.firestoreTriggerAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

Güncellenen kod, bölgeyle birlikte doğru etkinlik filtresini (bu örnekte document) belirtmelidir. Daha fazla bilgi için Cloud Functions konumları konusuna bakın.

Python

# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
    pass

# After
@firestore_fn.on_document_created("my-collection/{docId}",
                                  region="asia-northeast1")
def firestore_trigger_asia(event):
    pass

Ardından şu komutu çalıştırarak dağıtın:

firebase deploy --only functions:firestoreTriggerAsia

Artık çalışan iki aynı işlev var: firestoreTrigger, us-central1'te, firestoreTriggerAsia ise asia-northeast1'te çalışıyor.

Ardından firestoreTrigger öğesini silin:

firebase functions:delete firestoreTrigger

Artık yalnızca bir işlev var: asia-northeast1 içinde çalışan firestoreTriggerAsia.

İşlevin tetikleyici türünü değiştirme

Cloud Functions for Firebase dağıtımınızı zaman içinde geliştirirken çeşitli nedenlerle bir işlevin tetikleyici türünü değiştirmeniz gerekebilir. Örneğin, bir Firebase Realtime Database veya Cloud Firestore etkinlik türünü başka bir türle değiştirmek isteyebilirsiniz.

Bir işlevin etkinlik türünü değiştirmek için yalnızca kaynak kodunu değiştirip firebase deploy'ü çalıştırmak yeterli değildir. Hataları önlemek için bir işlevin tetikleyici türünü şu şekilde değiştirin:

  1. Kaynak kodu, istenen tetikleyici türüne sahip yeni bir işlev içerecek şekilde değiştirin.
  2. İşlevi dağıtın. Bu durumda, hem eski hem de yeni işlev geçici olarak çalıştırılır.
  3. Firebase İTŞ'yi kullanarak eski işlevi üretimden açıkça silin.

Örneğin, bir nesne silindiğinde tetiklenen bir işleviniz varsa ancak daha sonra nesne sürümlendirmesini etkinleştirdiyseniz ve bunun yerine arşiv etkinliğine abone olmak istiyorsanız önce işlevi yeniden adlandırın ve yeni tetikleyici türüne sahip olacak şekilde düzenleyin.

Node.js

// before
const {onObjectDeleted} = require("firebase-functions/v2/storage");

exports.objectDeleted = onObjectDeleted((event) => {
    // ...
});

// after
const {onObjectArchived} = require("firebase-functions/v2/storage");

exports.objectArchived = onObjectArchived((event) => {
    // ...
});

Python

# before
from firebase_functions import storage_fn

@storage_fn.on_object_deleted()
def object_deleted(event):
  # ...

# after 
from firebase_functions import storage_fn

@storage_fn.on_object_archived()
def object_archived(event):
  # ...

Ardından, eski işlevi silmeden önce yeni işlevi oluşturmak için aşağıdaki komutları çalıştırın:

# Create new function objectArchived
firebase deploy --only functions:objectArchived

# Wait until deployment is done; now both objectDeleted and objectArchived are running

# Delete objectDeleted
firebase functions:delete objectDeleted

Çalışma zamanı seçeneklerini ayarlama

Cloud Functions for Firebase, Node.js çalışma zamanı sürümü ve işlev başına zaman aşımı, bellek ayırma ve minimum/maksimum işlev örnekleri gibi çalışma zamanı seçeneklerini seçmenize olanak tanır.

En iyi uygulama olarak bu seçenekler (Node.js sürümü hariç) işlev kodunun içindeki bir yapılandırma nesnesinde ayarlanmalıdır. Bu RuntimeOptions nesnesi, işlevinizin çalışma zamanı seçenekleri için doğru kaynaktır ve diğer yöntemlerle (ör. Google Cloud Console veya gcloud CLI aracılığıyla) ayarlanan seçenekleri geçersiz kılar.

Geliştirme iş akışınız Google Cloud Console veya gcloud CLI aracılığıyla çalışma zamanı seçeneklerini manuel olarak ayarlamayı içeriyorsa ve bu değerlerin her dağıtımda geçersiz kılınmasını istemiyorsanız preserveExternalChanges seçeneğini true olarak ayarlayın. Bu seçenek true olarak ayarlandığında Firebase, kodunuzda belirtilen çalışma zamanı seçeneklerini işlevinizin şu anda dağıtılan sürümünün ayarlarıyla aşağıdaki önceliğe sahip olan ayarlarla birleştirir:

  1. İşlev kodunda seçenek ayarlanır: harici değişiklikleri geçersiz kıl.
  2. Seçenek, işlev kodunda RESET_VALUE olarak ayarlanır: Harici değişiklikleri varsayılan değerle geçersiz kılar.
  3. Seçenek, işlev kodunda değil, şu anda dağıtılan işlevde ayarlanmıştır: Dağıtılan işlevde belirtilen seçeneği kullanın.

preserveExternalChanges: true seçeneği, kodunuz artık işlevlerinizin çalışma zamanı seçenekleri için tam doğruluk kaynağı olmayacağından çoğu senaryo için önerilmez. Bu özelliği kullanıyorsanız bir işlevin tam yapılandırmasını görüntülemek için Google Cloud Console'u kontrol edin veya gcloud CLI'yi kullanın.

Node.js sürümünü ayarlama

Cloud Functions için Firebase SDK'sı, Node.js çalışma zamanı seçimine olanak tanır. Bir projedeki tüm işlevleri, yalnızca aşağıdaki desteklenen Node.js sürümlerinden birine karşılık gelen çalışma zamanı ortamında çalıştırmayı seçebilirsiniz:

  • Node.js 22 (önizleme)
  • Düğüm.js 20
  • Node.js 18

Node.js Sürüm 14 ve 16'nın desteği sonlandırılmıştır ve 2025'in başlarında kullanımdan kaldırılacaktır. Desteği sonlandırılan bu sürümlerle dağıtım devre dışı bırakılır.

Node.js sürümünü ayarlamak için:

Sürümünü, başlatma sırasında functions/ dizininizde oluşturulan package.json dosyasında engines alanında ayarlayabilirsiniz. Örneğin, yalnızca 18 sürümünü kullanmak için package.json'teki şu satırı düzenleyin:

  "engines": {"node": "20"}

Yarn paket yöneticisini kullanıyorsanız veya engines alanı için başka özel gereksinimleriniz varsa Firebase SDK'sının çalışma zamanını firebase.json yerine Cloud Functions için ayarlayabilirsiniz:

  {
    "functions": {
      "runtime": "nodejs18" // or nodejs20
    }
  }

KSA, package.json içinde ayrı olarak ayarladığınız herhangi bir değer veya aralık yerine firebase.json içinde ayarlanan değeri kullanır.

Node.js çalışma zamanınızı yükseltme

Node.js çalışma zamanınızı yükseltmek için:

  1. Projenizin Blaze fiyatlandırma planında olduğundan emin olun.
  2. Firebase CLI v11.18.0 veya sonraki bir sürümü kullandığınızdan emin olun.
  3. İlk kullanıma hazırlama sırasında functions/ dizininizde oluşturulan package.json dosyasında engines değerini değiştirin. Örneğin, sürüm 18'den sürüm 20'ye geçiş yapıyorsanız giriş şöyle görünmelidir: "engines": {"node": "20"}
  4. İsterseniz Firebase Local Emulator Suite simgesini kullanarak değişikliklerinizi test edebilirsiniz.
  5. Tüm işlevleri yeniden dağıtın.

Python sürümünü ayarlayın

Cloud Functions 12.0.0 ve üzeri sürümleri için Firebase SDK'sı, Python çalışma zamanı seçimine izin verir. firebase.json ürününde çalışma zamanı sürümünü gösterildiği gibi ayarlayın:

  {
    "functions": {
      "runtime": "python310" // or python311
    }
  }

Ölçeklendirme davranışını kontrol etme

Varsayılan olarak Cloud Functions for Firebase, çalışan örneklerin sayısını gelen isteklerin sayısına göre ölçeklendirir ve trafik azaldığında örnek sayısını sıfıra kadar düşürebilir. Ancak uygulamanız düşük gecikmeli bir deneyim gerektiriyorsa ve soğuk başlatma sayısını sınırlamak istiyorsanız, etkin durumda tutulacak ve istek yayınlamaya hazır olacak minimum sayıda kapsayıcı örneği belirleyerek bu varsayılan davranışı değiştirebilirsiniz.

Benzer şekilde, gelen isteklere yanıt olarak örneklerin ölçeklendirilmesini sınırlamak için maksimum bir sayı belirleyebilirsiniz. Bu ayarı, maliyetlerinizi kontrol etmek veya veritabanı gibi bir destek hizmetine yapılan bağlantı sayısını sınırlamak için kullanın.

Bu ayarları örnek başına eşzamanlılık ayarıyla (2. nesil için yeni) birlikte kullanarak işlevlerinizin ölçeklendirme davranışını kontrol edebilir ve düzenleyebilirsiniz. Uygulamanızın ve işlevinizin yapısı, en uygun maliyetli ve en iyi performansı sağlayacak ayarları belirler.

Düşük trafiğe sahip bazı uygulamalar için çoklu eşzamanlılığın olmadığı daha düşük bir CPU seçeneği en uygun seçenektir. Soğuk başlatmanın kritik bir sorun olduğu diğerlerinde ise yüksek eşzamanlılık ve minimum örnek belirlemek, trafikteki büyük artışların üstesinden gelmek için bir örnek grubunun her zaman hazır tutulması anlamına gelir.

Çok az trafik alan küçük ölçekli uygulamalarda, yüksek eşzamanlılıkla birlikte düşük maksimum örnek sayısı belirlemek, uygulamanın aşırı maliyetlere yol açmadan trafik patlaklarını işleyebileceği anlamına gelir. Ancak maksimum örnek sayısı çok düşük ayarlandığında, tavana ulaşıldığında isteklerin bırakılabileceğini unutmayın.

Eşzamanlı isteklere izin verme

Cloud Functions for Firebase (1. nesil) sürümünde her örnek aynı anda bir isteği işleyebiliyordu. Bu nedenle ölçeklendirme davranışı yalnızca minimum ve maksimum örnek ayarlarıyla belirleniyordu. Cloud Functions for Firebase (2. nesil) sürümünde, örnek sayısını kontrol etmenin yanı sıra concurrency seçeneğiyle her bir örneğin aynı anda yayınlayabileceği istek sayısını da kontrol edebilirsiniz. Eşzamanlılık için varsayılan değer 80'dir ancak bu değeri 1 ile 1000 arasında herhangi bir tam sayıya ayarlayabilirsiniz.

Daha yüksek eşzamanlılık ayarlarına sahip işlevler, her bir örneğin muhtemelen biraz boşluk olması nedeniyle soğuk başlatma olmadan trafik artışlarını emebilir. Bir örnek 50'ye kadar eşzamanlı isteği işleyecek şekilde yapılandırılmışsa ancak şu anda yalnızca 25 isteği işliyorsa yeni bir baştan başlatmaya gerek kalmadan 25 ek istekteki ani artışı yönetebilir. Buna karşılık, yalnızca 1 olan eşzamanlılık ayarıyla isteklerdeki bu artış 25 soğuk başlatmaya neden olabilir.

Bu basitleştirilmiş senaryo, eşzamanlılığın potansiyel verimlilik kazanımlarını göstermektedir. Gerçekte, verimliliği optimize etmek ve eşzamanlı olarak soğuk başlatmaları azaltmak için davranışı ölçeklendirmek daha karmaşıktır. 2. nesil Cloud Functions for Firebase'te eşzamanlılık, Cloud Run tarafından desteklenir ve Cloud Run'un konteyner örneğini otomatik ölçeklendirme kurallarına uyar.

Cloud Functions for Firebase (2. nesil) sürümünde daha yüksek eşzamanlılık ayarlarıyla deneme yaparken aşağıdakileri göz önünde bulundurun:

  • Pratik bir sınıra ulaşana kadar, daha yüksek eşzamanlılık ayarları optimum performans için daha yüksek CPU ve RAM gerektirebilir. Örneğin, yoğun görüntü veya video işleme yapan bir işlev, CPU ve RAM ayarları en üst düzeye çıkarılmış olsa bile 1.000 eşzamanlı isteği işlemek için yeterli kaynaklara sahip olmayabilir.
  • Cloud Functions for Firebase (2. nesil), Cloud Run tarafından desteklenmektedir. Bu nedenle, eşzamanlılığı optimize etme ile ilgili Google Cloud kılavuzundan da yararlanabilirsiniz.
  • Üretimde çoklu eşzamanlılığa geçmeden önce çoklu eşzamanlılığı test ortamında ayrıntılı olarak test ettiğinizden emin olun.

Minimum sayıda örneği hazır durumda tutun

Kaynak kodunda bir işlev için minimum örnek sayısını ayarlayabilirsiniz. Örneğin, bu işlev sıcak tutmak için en az 5 örnek ayarlar:

Node.js

const { onCall } = require("firebase-functions/v2/https");

exports.getAutocompleteResponse = onCall(
  {
    // Keep 5 instances warm for this latency-critical function
    minInstances: 5,
  },
  (event) => {
    // Autocomplete user’s search term
  }
);

Python

@https_fn.on_call(min_instances=5)
def get_autocomplete_response(event: https_fn.CallableRequest) -> https_fn.Response:

Minimum örnek değeri belirlerken dikkate almanız gereken bazı noktalar şunlardır:

  • Cloud Functions for Firebase, uygulamanızı ayarlarınızın üzerine ölçeklendirirse bu eşiğin üzerindeki her örnek için baştan başlatma işlemi gerçekleşir.
  • Soğuk başlatmalar, trafiği ani artışlar gösteren uygulamalar üzerinde en ciddi etkiye sahiptir. Uygulamanızda ani trafik artışları varsa ve her trafik artışında soğuk başlatmaları azaltacak kadar yüksek bir değer ayarlarsanız gecikmenin önemli ölçüde azaldığını görürsünüz. Sürekli trafiğe sahip uygulamalarda sıfırdan başlatmanın performansı ciddi şekilde etkilemesi olası değildir.
  • Minimum örnek sayısı belirlemek üretim ortamları için mantıklı olabilir ancak genellikle test ortamlarında bundan kaçınılmalıdır. Test projenizde sıfıra ölçeklendirme yapmak ancak üretim projenizde soğuk başlatmaları azaltmak için parametreli yapılandırmanızda minimum örnek sayısı değeri ayarlayabilirsiniz:

    Node.js

    const functions = require('firebase-functions/v1');
    const { defineInt, defineString } = require('firebase-functions/params');
    
    // Define some parameters
    const minInstancesConfig = defineInt('HELLO_WORLD_MININSTANCES');
    const welcomeMessage = defineString('WELCOME_MESSAGE');
    
    // To use configured parameters inside the config for a function, provide them 
    // directly. To use them at runtime, call .value() on them.
    export const helloWorld = functions.runWith({ minInstances: minInstancesConfig}).https.onRequest(
      (req, res) => {
        res.send(`${welcomeMessage.value()}! I am a function.`);
      }
    );
    

    Python

    MIN_INSTANCES = params.IntParam("HELLO_WORLD_MININSTANCES")
    WELCOME_MESSAGE = params.StringParam("WELCOME_MESSAGE")
    
    @https_fn.on_request(min_instances=MIN_INSTANCES.value())
    def get_autocomplete_response(event: https_fn.Request) -> https_fn.Response:
        return https_fn.Response(f"{WELCOME_MESSAGE.value()} I'm a function.")
    

Bir işlevin maksimum örnek sayısını sınırlama

İşlev kaynak kodunda maksimum örnek sayısı için bir değer belirleyebilirsiniz. Örneğin, bu işlev, varsayımsal bir eski veritabanını boğmamak için 100 örneklik bir sınır ayarlar:

Node.js

const { onMessagePublished } = require("firebase-functions/v2/pubsub");

exports.mirrorevents = onMessagePublished(
  { topic: "topic-name", maxInstances: 100 },
  (event) => {
    // Connect to legacy database
  }
);

Python

@pubsub_fn.on_message_published(topic="topic-name", max_instances=100)
def mirrorevents(event: pubsub_fn.CloudEvent):
#  Connect to legacy database

Bir HTTP işlevi maksimum örnek sayısı sınırına kadar ölçeklendirilirse yeni istekler 30 saniye boyunca sıraya alınır ve bu süre zarfında kullanılabilir bir örnek yoksa 429 Too Many Requests yanıt koduyla reddedilir.

Maksimum örnek sayısı ayarlarını kullanmayla ilgili en iyi uygulamalar hakkında daha fazla bilgi edinmek için maksimum örnek sayısını ayarlamayla ilgili en iyi uygulamalara göz atın.

Zaman aşımı ve bellek tahsisi ayarlama

Bazı durumlarda, işlevleriniz için uzun bir zaman aşımı değeri veya büyük bir bellek tahsisi gibi özel şartlar olabilir. Bu değerleri Google Cloud konsolunda veya işlev kaynak kodunda (yalnızca Firebase) ayarlayabilirsiniz.

İşlevlerin kaynak kodunda bellek ayırma ve zaman aşımını ayarlamak için bellek ve zaman aşımı saniyeleriyle ilgili genel seçenekleri kullanarak işlevlerinizi çalıştıran sanal makineyi özelleştirin. Örneğin, bu Cloud Storage işlevi 1 GiB bellek kullanır ve 300 saniye sonra zaman aşımına uğrar:

Node.js

exports.convertLargeFile = onObjectFinalized({
  timeoutSeconds: 300,
  memory: "1GiB",
}, (event) => {
  // Do some complicated things that take a lot of memory and time
});

Python

@storage_fn.on_object_finalized(timeout_sec=300, memory=options.MemoryOption.GB_1)
def convert_large_file(event: storage_fn.CloudEvent):
# Do some complicated things that take a lot of memory and time.

Zaman aşımı saniyeleri için maksimum değer 540 veya 9 dakikadır.

Google Cloud konsolunda bellek tahsisini ve zaman aşımını ayarlamak için:

  1. Google Cloud konsolunda, sol menüden Cloud Functions for Firebase'yi seçin.
  2. İşlev listesinde adını tıklayarak bir işlev seçin.
  3. Üst menüdeki Düzenle simgesini tıklayın.
  4. Ayırılan bellek etiketli açılır menüden bir bellek ayırma seçin.
  5. Gelişmiş seçenekleri görüntülemek için Diğer'i tıklayın ve Zaman aşımı metin kutusuna bir saniye sayısı girin.
  6. İşlevi güncellemek için Kaydet'i tıklayın.

CPU varsayılanlarını geçersiz kılma

2 GB'a kadar bellek ayrılır. Cloud Functions for Firebase (2. nesil) ürününde her işlev varsayılan olarak bir CPU'ya ayarlanır ve daha sonra 4 ve 8 GB için 2 CPU'ya yükseltilir. Bunun, 1. nesil varsayılan davranıştan önemli ölçüde farklı olduğunu, aşağıdaki tabloda belirtildiği gibi düşük bellek işlevleri için maliyetlerin biraz daha yüksek olmasına neden olabilecek şekillerde olduğunu unutmayın:

Ayrılan RAM 1. sürümün varsayılan CPU'su (kesirli) 2. sürümün varsayılan CPU'su Ms başına fiyat artışı
128 MB 1/12 1 10,5x
256 MB 1/6 1 5,3x
512 MB 1/3 1 2,7x
1 GB 7/12 1 1,6x
2 GB 1 1 1 kat
4 GB 2 2 1 kat
8 GB 2 2 1 kat
16 GB Yok 4 Yok

2. nesil işlevleriniz için 1. nesil davranışı tercih ediyorsanız 1. nesil varsayılanlarını genel bir seçenek olarak ayarlayın:

Node.js

// Turn off Firebase defaults
setGlobalOptions({ cpu: 'gcf_gen1' });

Python

# Use 1st gen behavior
set_global_options(cpu="gcf_gen1")

Yoğun CPU kullanan işlevler için 2. nesil, ek CPU yapılandırmaya yönelik esneklik sağlar. CPU'yu işlev bazında artırabilirsiniz.

Node.js

// Boost CPU in a function:
export const analyzeImage = onObjectFinalized({ cpu: 2 }, (event) => {
  // computer vision goes here
});

Python

# Boost CPU in a function:
@storage_fn.on_object_finalized(cpu=2)
def analyze_image(event: storage_fn.CloudEvent):
# computer vision goes here