Bir uzantı için Bulut İşlevlerini yazma

Bir uzantı oluşturduğunuzda, yalnızca kendi projenizde kullanılacak bir işlevi yazdığınız gibi, bunun mantığını Bulut İşlevlerini kullanarak yazarsınız. İşlevlerinizi extension.yaml dosyasında bildirirsiniz ve kullanıcılar uzantınızı yüklediğinde bu işlevler projelerine dağıtılır.

Cloud Functions'ın kullanımına ilişkin genel bilgiler için Cloud Functions belgelerine bakın.

1. ve 2. nesil Bulut İşlevleri

Firebase hem 1. nesil hem de 2. nesil Bulut İşlevlerini destekler. Ancak Firebase Uzantıları'nda şu anda belirli tetikleyici türleriyle hangi nesil bulut işlevini kullanabileceğiniz konusunda bazı kısıtlamalar bulunmaktadır. Bu nedenle birçok uzantı, 1. ve 2. nesil işlevlerin bir karışımını içerir.

Aşağıda her tetikleyici türü için işlev oluşturma desteği belirtilmiştir.

Özel hususlar

  • Bazı işlev tanımları, extension.yaml dosyasında da belirtilen bilgileri belirtmenizi gerektirir. Örneğin, Cloud Firestore, izlenecek belge modelini belirten bir document() yöntemine sahiptir ve extension.yaml dosyasındaki karşılık gelen bildirimi, aynısını belirten bir resource alanına sahiptir.

    Bu durumlarda extension.yaml dosyasında belirtilen yapılandırma kullanılır ve işlev tanımında belirtilen yapılandırma göz ardı edilir.

    Belgeleme amacıyla, yapılandırılmış değerin işlev tanımında ne olursa olsun belirtilmesi yaygın bir uygulamadır. Bu sayfadaki örnekler bu modeli takip etmektedir.

  • Cloud Functions 1. nesil SDK'sında, 1. nesil işlevlerde parametreli değerlerle çalışmak için kullanabileceğiniz bir functions.config() yöntemi ve functions:config:set CLI komutu bulunur. Bu teknik Cloud Functions'ta kullanımdan kaldırılmıştır ve bir uzantıda hiç çalışmayacaktır . Bunun yerine, functions.params modülünü (önerilen) veya process.env kullanın.

TypeScript'i kullanma

Kendi uzantınızı geliştirmeye yönelik belgelerin çoğunda, Firebase için Cloud Functions'a yönelik JavaScript kullanan iş akışları açıklanmaktadır. Ancak bunun yerine işlevlerinizi TypeScript kullanarak yazabilirsiniz.

Aslında tüm resmi Firebase uzantıları TypeScript'te yazılmıştır. Uzantınız için TypeScript kullanmaya yönelik en iyi uygulamalardan bazıları için bu uzantıları inceleyebilirsiniz.

Uzantınızın işlevlerini TypeScript'te yazıyorsanız, uzantınızı yüklemeden önce aşağıdakileri yapmanız gerekir:

  1. Uzantınızın işlevlerinin kaynak kodunu JavaScript'e derleyin.

    firebase ext:dev:init komutu, işlevlerinizi yazmak için TypeScript'i seçmenizi sağlar. Komut size eksiksiz, kurulabilir bir uzantının yanı sıra npm run build ile çalıştırabileceğiniz bir derleme komut dosyası sağlar.

  2. package.json dosyanızda main alanı oluşturulan JavaScript'e yönlendirdiğinizden emin olun.

  3. Uzantınızı yerel kaynaktan kuruyor veya yüklüyorsanız önce TypeScript dosyalarınızı derleyin.

Desteklenen işlev tetikleyicileri

HTTP tetikleyicileri

HTTP ile tetiklenen bir işlev, genel bir https uç noktasına dağıtılır ve uç noktaya erişildiğinde çalışır.

HTTP ile tetiklenen işlevlerin yazılmasına ilişkin bilgi için Bulut İşlevleri belgelerindeki HTTP istekleri yoluyla işlevleri çağırma konusuna bakın.

İşlev tanımı (yalnızca 1. nesil)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Çağrılabilir işlevler

Çağrılabilir işlevler, HTTP ile tetiklenen işlevlere benzer, ancak istemci tarafı kodunuzdan çağrılmalarını kolaylaştıran bir protokol uygularlar.

Çağrılabilir işlevlerin kullanımına ilişkin bilgi için Bulut İşlevleri belgelerindeki uygulamanızdan çağrı işlevleri bölümüne bakın.

İşlev tanımı (yalnızca 1. nesil)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Zamanlanmış işlev tetikleyicileri

Zamanlanmış bir işlev, özelleştirilebilir bir zamanlamaya göre tekrar tekrar çalışır.

Zamanlanmış işlevlerin yazılmasına ilişkin bilgi için Bulut İşlevleri belgelerindeki Zamanlama işlevleri konusuna bakın.

İşlev tanımı (yalnızca 1. nesil)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...

scheduleTrigger için mevcut alt alanlar şunlardır:

Alan Tanım
schedule
(gerekli)

İşlevin çalışmasını istediğiniz sıklık.

Bu alan, sözdizimlerinden herhangi birini kullanan dizeleri kabul edebilir ( tek tırnak içine almak gerekir):

timeZone
(isteğe bağlı)

Zamanlamanın çalışacağı saat dilimi.

Kullanıcıların uzantınızı yüklediklerinde zamanlamayı yapılandırabilmelerini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource bildiriminde bu parametreye başvurun:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: ${SCHEDULE_FREQUENCY}
  - name: anotherFunction
    type: ...

params:
  - param: SCHEDULE_FREQUENCY
    label: Schedule
    description: How often do you want to run yourFunctionName()?
    type: string
    default: 'every 5 minutes'  # Specifying a default is optional.
    required: true

Görev kuyruğu tetikleyicileri

Bir görev kuyruğu işlevi, uzantınızın yaşam döngüsü olaylarında veya Admin SDK'nın TaskQueue.enqueue() yöntemi kullanılarak uzantınızın görev kuyruğuna manuel olarak eklendiğinde tetiklenir.

Yaşam döngüsü olaylarını işleyen işlevlerin yazılması hakkında bilgi için Uzantınızın yaşam döngüsü olaylarını işleme konusuna bakın.

Görev kuyruğu işlevlerini yazma hakkında bilgi için Bulut İşlevleri belgelerindeki Bulut Görevleri ile işlevleri sıraya koyma konusuna bakın.

İşlev tanımı (yalnızca 1. nesil)

import { tasks } from "firebase-functions/v1";

export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}

taskQueueTrigger özelliğini {} olarak veya görev kuyruğunun hız sınırlarını ayarlayan ve yeniden deneme davranışını ayarlayan bir seçenekler haritası olarak ayarlayın (bkz. Görev kuyruğunu ayarlama ).

İşlevinizi uzantınızın yaşam döngüsü olaylarında tetiklemek istiyorsanız, işlevin adını ve işleme başladığında Firebase konsolunda görüntülenecek isteğe bağlı bir işleme mesajını içeren lifecycleEvents kayıtlarını ekleyin.

lifecycleEvents:
  onInstall:
    function: myTaskFunction
    processingMessage: Resizing your existing images
  onUpdate:
    function: myOtherTaskFunction
    processingMessage: Setting up your extension
  onConfigure:
    function: myOtherTaskFunction
    processingMessage: Setting up your extension

Analitik

Belirtilen bir Analytics olayı günlüğe kaydedildiğinde Analytics tarafından tetiklenen bir işlev çalışır.

Analytics tarafından tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Bulut İşlevleri belgelerindeki Google Analytics tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { analytics } from "firebase-functions/v1";

export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.analytics/eventTypes/event.log
        resource: projects/${PROJECT_ID}/events/ga_event
  - name: anotherFunction
    type: ...

Kullanıcıların, uzantınızı yüklediklerinde Analytics etkinliğini dinleyecek şekilde yapılandırabilmelerini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource bildiriminde bu parametreye başvurun:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.analytics/eventTypes/event.log
        resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
  - name: anotherFunction
    type: ...

params:
  - param: EVENT_NAME
    label: Analytics event
    description: What event do you want to respond to?
    type: string
    default: ga_event  # Specifying a default is optional.
    required: true

Kimlik doğrulama

Kimlik doğrulamayla tetiklenen bir işlev, bir kullanıcı oluşturulduğunda veya silindiğinde çalışır.

Kimlik doğrulamayla tetiklenen işlevlerin yazılması hakkında bilgi için Bulut İşlevleri belgelerindeki Firebase Kimlik Doğrulama tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { auth } from "firebase-functions/v1";

export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});

export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/firebase.auth/eventTypes/user.create
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

Aşağıdaki tablo, desteklenen Kimlik Doğrulama olayı türlerinin her birinin nasıl belirtileceğini gösterir:

Cloud Functions olay tetikleyicisi eventType Tanım
onCreate() providers/firebase.auth/eventTypes/user.create Yeni kullanıcı oluşturuldu
onDelete() providers/firebase.auth/eventTypes/user.delete Kullanıcı silindi

Bulut Firestore

Bir belge oluşturulduğunda, güncellendiğinde veya silindiğinde Cloud Firestore tarafından tetiklenen bir işlev çalışır.

Firestore tarafından tetiklenen işlevlerin yazılması hakkında bilgi için Bulut İşlevleri belgelerindeki Bulut Firestore tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { firestore } from "firebase-functions/v1";

export const yourFunctionName = firestore.document("collection/{doc_id}")
  .onCreate((snapshot, context) => {
    // ...
  });

export const yourFunctionName2 = firestore.document("collection/{doc_id}")
  .onUpdate((change, context) => {
    // ...
  });

export const yourFunctionName3 = firestore.document("collection/{doc_id}")
  .onDelete((snapshot, context) => {
    // ...
  });

export const yourFunctionName4 = firestore.document("collection/{doc_id}")
  .onWrite((change, context) => {
    // onWrite triggers on creation, update, and deletion.
    // ...
  });

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/cloud.firestore/eventTypes/document.write
        resource: projects/${PROJECT_ID}/databases/(default)/documents/collection/{documentID}
  - name: anotherFunction
    type: ...

Aşağıdaki tablo, desteklenen Cloud Firestore olay türlerinin her birinin nasıl belirtileceğini gösterir:

Cloud Functions olay tetikleyicisi eventType Tanım
onCreate() providers/cloud.firestore/eventTypes/document.create Yeni belge oluşturuldu
onDelete() providers/cloud.firestore/eventTypes/document.delete Doküman silindi
onUpdate() providers/cloud.firestore/eventTypes/document.update Doküman güncellendi
onWrite() providers/cloud.firestore/eventTypes/document.write Doküman oluşturuldu, silindi veya güncellendi

Kullanıcıların, uzantınızı yüklediklerinde belge yolunu yapılandırabilmelerini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource bildiriminde bu parametreye başvurun:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/cloud.firestore/eventTypes/document.write
        resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
  - name: anotherFunction
    type: ...

params:
  - param: YOUR_DOCUMENT_PATH
    label: Cloud Firestore path
    description: Where do you want to watch for changes?
    type: string
    default: path/to/{documentID}  # Specifying a default is optional.
    required: true

Pub/Sub

Belirli bir konuya bir mesaj yayınlandığında Pub/Sub tarafından tetiklenen işlev çalışır.

Pub/Sub tarafından tetiklenen işlevlerin yazılmasına ilişkin bilgi için Cloud Functions belgelerindeki Pub/Sub tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.pubsub.topic.publish
        resource: projects/${PROJECT_ID}/topics/topic-name
  - name: anotherFunction
    type: ...

Kullanıcıların, uzantınızı yüklediklerinde Pub/Sub konusunu yapılandırabilmelerini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource bildiriminde bu parametreye başvurun:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.pubsub.topic.publish
        resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
  - name: anotherFunction
    type: ...

params:
  - param: PUBSUB_TOPIC
    label: Pub/Sub topic
    description: Which Pub/Sub topic do you want to watch for messages?
    type: string
    default: topic-name  # Specifying a default is optional.
    required: true

Gerçek Zamanlı Veritabanı

Gerçek Zamanlı Veritabanıyla tetiklenen bir işlev, belirtilen bir kalıpla eşleşen bir yol oluşturulduğunda, güncellendiğinde veya silindiğinde çalışır.

RTDB ile tetiklenen işlevlerin yazılmasına ilişkin bilgi için Bulut İşlevleri belgelerindeki Gerçek Zamanlı Veritabanı tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { database } from "firebase-functions/v1";

export const yourFunctionName = database.ref("path/to/{item}")
  .onCreate((snapshot, context) => {
    // ...
  });

export const yourFunctionName2 = database.ref("path/to/{item}")
  .onUpdate((change, context) => {
    // ...
  });

export const yourFunctionName3 = database.ref("path/to/{item}")
  .onDelete((snapshot, context) => {
    // ...
  });

export const yourFunctionName4 = database.ref("path/to/{item}")
  .onWrite((change, context) => {
    // onWrite triggers on creation, update, and deletion.
    // ...
  });

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.database/eventTypes/ref.create
        # DATABASE_INSTANCE (project's default instance) is an auto-populated
        # parameter value. You can also specify an instance.
        resource: projects/_/instances/${DATABASE_INSTANCE}/refs/path/to/{itemId}
  - name: anotherFunction
    type: ...

Aşağıdaki tablo, desteklenen Cloud Firestore olay türlerinin her birinin nasıl belirtileceğini gösterir:

Cloud Functions olay tetikleyicisi eventType Tanım
onCreate() providers/google.firebase.database/eventTypes/ref.create Oluşturulan veriler
onDelete() providers/google.firebase.database/eventTypes/ref.delete Veriler silindi
onUpdate() providers/google.firebase.database/eventTypes/ref.update Veriler güncellendi
onWrite() providers/google.firebase.database/eventTypes/ref.write Veriler oluşturuldu, silindi veya güncellendi

Kullanıcıların, uzantınızı yüklediklerinde izlenecek yolu yapılandırabilmelerini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource bildiriminde bu parametreye başvurun:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.database/eventTypes/ref.create
        # DATABASE_INSTANCE (project's default instance) is an auto-populated
        # parameter value. You can also specify an instance.
        resource: projects/_/instances/${DATABASE_INSTANCE}/refs/${DB_PATH}
  - name: anotherFunction
    type: ...

params:
  - param: DB_PATH
    label: Realtime Database path
    description: Where do you want to watch for changes?
    type: string
    default: path/to/{itemId}  # Specifying a default is optional.
    required: true

Uzaktan Yapılandırma

Bir projenin parametre şablonu güncellendiğinde Remote Config ile tetiklenen bir işlev çalışır.

Remote Config ile tetiklenen işlevlerin yazılması hakkında bilgi için Cloud Functions belgelerindeki Remote Config tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.firebase.remoteconfig.update
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

Bulut depolama

Cloud Storage tarafından tetiklenen bir işlev, bir nesne oluşturulduğunda, arşivlendiğinde veya silindiğinde ya da meta verileri değiştiğinde çalışır.

Depolamayla tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Bulut İşlevleri belgelerindeki Bulut Depolama tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { storage } from "firebase-functions/v1";

export const yourFunctionName = storage.object().onFinalize((object, context) => {
  // ...
});

export const yourFunctionName2 = storage.object().onMetadataUpdate((object, context) => {
  // ...
});

export const yourFunctionName3 = storage.object().onArchive((object, context) => {
  // ...
});

export const yourFunctionName4 = storage.object().onDelete((object, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.storage.object.finalize
        # STORAGE_BUCKET (project's default bucket) is an auto-populated
        # parameter. You can also specify a bucket.
        resource: projects/_/buckets/${STORAGE_BUCKET}
  - name: anotherFunction
    type: ...

Aşağıdaki tabloda, desteklenen Cloud Storage olay türlerinin her birinin nasıl belirtileceği gösterilmektedir:

Cloud Functions olay tetikleyicisi eventType Tanım
onFinalize() google.storage.object.finalize Nesne oluşturuldu
onMetadataUpdate() google.storage.object.metadataUpdate Nesne meta verileri güncellendi
onArchive() google.storage.object.archive Nesne arşivlendi
onDelete() google.storage.object.delete Nesne silindi

Kullanıcıların, uzantınızı yüklediklerinde depolama paketini yapılandırabilmelerini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource bildiriminde bu parametreye başvurun:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.storage.object.finalize
        resource: projects/_/buckets/${YOUR_BUCKET}
  - name: anotherFunction
    type: ...

params:
  - param: YOUR_BUCKET
    label: Cloud Storage bucket
    description: Which bucket do you want to watch for changes?
    type: selectResource
    resourceType: storage.googleapis.com/Bucket
    default: ${STORAGE_BUCKET}  # Specifying a default is optional.
    required: true

Test Laboratuvarı

Bir test matrisi testlerini tamamladığında Test Laboratuvarı tarafından tetiklenen bir işlev çalışır.

Test Lab tarafından tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Cloud Functions belgelerindeki Firebase Test Lab tetikleyicilerine bakın.

İşlev tanımı (yalnızca 1. nesil)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.testing.testMatrix.complete
        resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
  - name: anotherFunction
    type: ...

Crashlytics uyarı tetikleyicileri

Crashlytics bir uyarı yayınladığında Crashlytics tarafından tetiklenen bir işlev çalışır.

Uyarıyla tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Cloud Functions belgelerindeki Firebase Alerts tetikleyicilerine bakın.

İşlev tanımı (yalnızca 2. nesil)

import {
  onNewFatalIssuePublished,
  onNewNonfatalIssuePublished,
  onNewAnrIssuePublished,
  onRegressionAlertPublished,
  onVelocityAlertPublished,
  onStabilityDigestPublished,
} from "firebase-functions/v2/alerts/crashlytics";

export const yourFunctionName = onNewFatalIssuePublished((event) => {
  // ...
});

export const yourFunctionName2 = onNewNonfatalIssuePublished((event) => {
  // ...
});

export const yourFunctionName3 = onNewAnrIssuePublished((event) => {
  // ...
});

export const yourFunctionName4 = onRegressionAlertPublished((event) => {
  // ...
});

export const yourFunctionName5 = onVelocityAlertPublished((event) => {
  // ...
});

export const yourFunctionName6 = onStabilityDigestPublished((event) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: crashlytics.newFatalIssue
  - name: anotherFunction
    type: ...

alerttype için aşağıdaki değerleri kullanabilirsiniz

  • crashlytics.newFatalIssue
  • crashlytics.newNonfatalIssue
  • crashlytics.regression
  • crashlytics.stabilityDigest
  • crashlytics.velocity
  • crashlytics.newAnrIssue

Performans İzleme uyarı tetikleyicileri

Performans İzleme bir uyarı yayınladığında Performans İzleme tarafından tetiklenen bir işlev çalışır.

Uyarıyla tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Cloud Functions belgelerindeki Firebase Alerts tetikleyicilerine bakın.

İşlev tanımı (yalnızca 2. nesil)

import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";

export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: performance.threshold
  - name: anotherFunction
    type: ...

Uygulama Dağıtımı uyarı tetikleyicileri

App Distribution bir uyarı yayınladığında, App Distribution tarafından tetiklenen bir işlev çalışır.

Uyarıyla tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Cloud Functions belgelerindeki Firebase Alerts tetikleyicilerine bakın.

İşlev tanımı (yalnızca 2. nesil)

import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";

export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});

export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: appDistribution.inAppFeedback
  - name: anotherFunction
    type: ...

alerttype için aşağıdaki değerleri kullanabilirsiniz

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

Özel olay tetikleyicileri (Eventarc)

Eventarc tarafından tetiklenen bir işlev, belirli bir olay türü belirli bir kanala yayınlandığında çalışır.

Eventarc tarafından tetiklenen işlevlerin yazılması hakkında bilgi için Bulut İşlevleri belgelerindeki Özel olay tetikleyicileri oluşturma ve işleme konusuna bakın.

Ayrıca, kullanıcılara uzantınıza özel mantık ekleme olanağı sağlamak için uzantılarınızdaki etkinlikleri de yayınlayabilirsiniz . Bkz. Uzantıda geliştirici tarafından sağlanan özel mantığı kullanma .

İşlev tanımı (yalnızca 2. nesil)

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});

Kaynak bildirimi (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      # LOCATION is a user-configured parameter value specified by the user
      # during installation.
      location: ${param:LOCATION}
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
        timeoutSeconds: 60
      eventTrigger:
        eventType: firebase.extensions.storage-resize-images.v1.complete
        channel: projects/${param:PROJECT_ID}/locations/us-central1/channels/firebase
  - name: anotherFunction
    type: ...

Uzantınız yüklendiğinde kanalın zaten mevcut olması gerekir. Örneğin, kanalı oluşturan başka bir uzantının özel etkinliklerine bağlıysanız kullanıcılarınıza önce bu uzantıyı yüklemeleri talimatını verin.

Yukarıdaki örnek us-central1 bölgesindeki "varsayılan" Firebase kanalı için özel bir etkinlik tetikleyicisi oluşturacaktır. Parametreleri kullanarak kanal adını ve bölgesini özelleştirilebilir hale getirebilirsiniz. Örneğin:


params:
  - param: EVENTARC_CHANNEL_NAME
    label: Eventarc channel name
    description: What is the name of the Eventarc channel.
    default: firebase
    type: string
    required: true

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      location: ${param:LOCATION}
      eventTrigger:
        eventType: firebase.extensions.storage-resize-images.v1.complete
        channel: projects/${param:PROJECT_ID}/locations/${param:LOCATION}/channels/${param:EVENTARC_CHANNEL_NAME}