Podczas tworzenia rozszerzenia piszesz jego logikę za pomocą Cloud Functions, w podobny sposób jak w przypadku funkcji, która będzie używana tylko w Twoim projekcie. Funkcje deklarujesz w pliku extension.yaml. Gdy użytkownicy zainstalują rozszerzenie, te funkcje zostaną wdrożone w ich projekcie.
Ogólne informacje o korzystaniu z Cloud Functions znajdziesz w dokumentacji Cloud Functions.
1 i 2 generacja Cloud Functions
Firebase obsługuje zarówno 1 generację, jak i 2 generacjęCloud Functions. Rozszerzenia Firebase mają jednak obecnie pewne ograniczenia dotyczące tego, której generacji funkcji chmury możesz używać w przypadku niektórych typów reguł. Z tego powodu wiele rozszerzeń zawiera funkcje 1 i 2 generacji.
Obsługa generowania funkcji jest podana poniżej dla każdego typu wyzwalacza.
Specjalne uwagi
- Niektóre definicje funkcji wymagają podania informacji, które są również określone w pliku - extension.yaml. Na przykład Cloud Firestore ma metodę- document(), która określa wzorzec dokumentu do obserwowania, a odpowiednia deklaracja w- extension.yamlma pole- resource, które określa to samo.- W takich sytuacjach używana jest konfiguracja określona w pliku - extension.yaml, a konfiguracja określona w definicji funkcji jest ignorowana.- W celu dokumentacji często określa się skonfigurowaną wartość w definicji funkcji. Przykłady na tej stronie są zgodne z tym wzorcem. 
- Pakiet SDK Cloud Functions I generacji ma metodę - functions.config()i polecenie interfejsu wiersza poleceń- functions:config:set, których możesz używać do pracy z wartościami sparametryzowanymi w funkcjach I generacji. Ta technika jest wycofana w Cloud Functions i w rozszerzeniu nie będzie działać. Zamiast tego użyj modułu- functions.params(zalecane) lub- process.env.
Korzystanie z TypeScriptu
Większość dokumentacji dotyczącej tworzenia własnego rozszerzenia opisuje przepływy pracy z użyciem JavaScriptu w przypadku Cloud Functions for Firebase. Możesz jednak pisać funkcje w TypeScript.
Wszystkie oficjalne Firebaserozszerzenia są napisane w TypeScript. Możesz przejrzeć te rozszerzenia, aby poznać sprawdzone metody korzystania z TypeScriptu w rozszerzeniu.
Jeśli funkcje rozszerzenia są napisane w TypeScript, przed zainstalowaniem rozszerzenia musisz wykonać te czynności:
- Skompiluj kod źródłowy funkcji rozszerzenia do JavaScriptu. - firebase ext:dev:initPolecenie umożliwia wybór języka TypeScript do pisania funkcji. Polecenie udostępnia kompletną, gotową do zainstalowania wtyczkę oraz skrypt kompilacji, który możesz uruchomić za pomocą- npm run build.
- W pliku - package.jsonupewnij się, że pole- mainwskazuje wygenerowany kod JavaScript.
- Jeśli instalujesz lub przesyłasz rozszerzenie z lokalnego źródła, najpierw skompiluj pliki TypeScript. 
Obsługiwane aktywatory funkcji
Aktywatory HTTP
Funkcja wywoływana przez HTTP jest wdrażana w publicznym punkcie końcowym https i uruchamiana, gdy uzyskuje się do niego dostęp.
Więcej informacji o pisaniu funkcji aktywowanych przez HTTP znajdziesz w artykule Wywoływanie funkcji za pomocą żądań HTTP w Cloud Functionsdokumentacji.
Definicja funkcji (tylko 1 generacji)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...
Funkcje wywoływalne
Funkcje wywoływalne są podobne do funkcji wywoływanych przez HTTP, ale implementują protokół, który ułatwia wywoływanie ich z kodu po stronie klienta.
Informacje o korzystaniu z funkcji wywoływanych znajdziesz w sekcji Wywoływanie funkcji z aplikacji w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacji)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...
Aktywatory zaplanowanych funkcji
Zaplanowana funkcja jest uruchamiana wielokrotnie zgodnie z dostosowywanym harmonogramem.
Informacje o tworzeniu funkcji harmonogramu znajdziesz w sekcji Planowanie funkcji w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacji)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...
Oto dostępne pola podrzędne dla parametru scheduleTrigger:
| Pole | Opis | 
|---|---|
| schedule(wymagane) | Częstotliwość, z jaką ma być uruchamiana funkcja. W tym polu można używać ciągów znaków z dowolną składnią (wymagane jest umieszczenie w pojedynczych cudzysłowach): 
 | 
| timeZone(opcjonalnie) | Strefa czasowa, w której będzie uruchamiany harmonogram. 
 | 
Jeśli chcesz, aby użytkownicy mogli skonfigurować harmonogram podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji funkcji resource:
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
Wyzwalacze kolejki zadań
Funkcja kolejki zadań jest wywoływana w przypadku zdarzeń cyklu życia rozszerzenia lub gdy zostanie ręcznie dodana do kolejki zadań rozszerzenia za pomocą metody TaskQueue.enqueue() pakietu Admin SDK.
Informacje o pisaniu funkcji obsługujących zdarzenia cyklu życia znajdziesz w artykule Obsługa zdarzeń cyklu życia rozszerzenia.
Więcej informacji o pisaniu funkcji kolejki zadań znajdziesz w sekcji Kolejkowanie funkcji za pomocą Cloud Tasks w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacji)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}
Ustaw właściwość taskQueueTrigger na wartość {} lub mapę opcji, które dostrajają limity szybkości i zachowanie kolejki zadań w przypadku ponawiania (patrz Dostrajanie kolejki zadań).
Jeśli chcesz wywoływać funkcję w przypadku zdarzeń cyklu życia rozszerzenia, dodaj rekordy lifecycleEvents z nazwą funkcji i opcjonalną wiadomością o przetwarzaniu, która będzie wyświetlana w Firebase konsoli po rozpoczęciu przetwarzania.
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
Analytics
Funkcja aktywowana przez Analytics jest uruchamiana, gdy zostanie zarejestrowane określone zdarzenie Analytics.
Informacje o pisaniu funkcji wywoływanych przez Analytics znajdziesz w dokumentacji Cloud Functions dotyczącej wyzwalaczy Google Analytics.
Definicja funkcji (tylko 1 generacji)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});
Deklaracja zasobu (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: ...
Jeśli chcesz, aby użytkownicy mogli konfigurować zdarzenie Analytics, które ma być nasłuchiwane podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji funkcji resource:
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
Authentication
Funkcja wywoływana przez uwierzytelnianie jest uruchamiana, gdy użytkownik jest tworzony lub usuwany.
Więcej informacji o pisaniu funkcji wywoływanych przez uwierzytelnianie znajdziesz w dokumentacji Cloud Functions w sekcji Triggery Uwierzytelniania Firebase.
Definicja funkcji (tylko 1 generacji)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});
Deklaracja zasobu (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: ...
W tabeli poniżej znajdziesz informacje o tym, jak określać poszczególne obsługiwane typy zdarzeńAuthentication:
| Aktywator zdarzeń Cloud Functions | eventType | Opis | 
|---|---|---|
| onCreate() | providers/firebase.auth/eventTypes/user.create | Utworzono nowego użytkownika | 
| onDelete() | providers/firebase.auth/eventTypes/user.delete | Użytkownik został usunięty | 
Cloud Firestore
Funkcja wywoływana przez Cloud Firestore jest uruchamiana, gdy dokument zostanie utworzony, zaktualizowany lub usunięty.
Informacje o pisaniu funkcji aktywowanych przez Firestore znajdziesz w sekcji Aktywatory Cloud Firestore w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacji)
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.
    // ...
  });
Deklaracja zasobu (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: ...
W tabeli poniżej znajdziesz informacje o tym, jak określać poszczególne obsługiwane Cloud Firestoretypy zdarzeń:
| Aktywator zdarzeń Cloud Functions | eventType | Opis | 
|---|---|---|
| onCreate() | providers/cloud.firestore/eventTypes/document.create | Utworzono nowy dokument | 
| onDelete() | providers/cloud.firestore/eventTypes/document.delete | Dokument został usunięty | 
| onUpdate() | providers/cloud.firestore/eventTypes/document.update | Dokument został zaktualizowany | 
| onWrite() | providers/cloud.firestore/eventTypes/document.write | Dokument został utworzony, usunięty lub zaktualizowany | 
Jeśli chcesz, aby użytkownicy mogli konfigurować ścieżkę dokumentu podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji funkcji resource:
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
Funkcja aktywowana przez Pub/Sub jest uruchamiana, gdy w określonym temacie zostanie opublikowana wiadomość.
Więcej informacji o pisaniu funkcji wyzwalanych przez Pub/Sub znajdziesz w dokumentacji Cloud Functions w sekcji Aktywatory Pub/Sub.
Definicja funkcji (tylko 1 generacji)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});
Deklaracja zasobu (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: ...
Jeśli chcesz, aby użytkownicy mogli skonfigurować temat Pub/Sub podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji funkcji resource:
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
Realtime Database
Funkcja wywoływana przez bazę danych czasu rzeczywistego jest uruchamiana, gdy ścieżka pasująca do określonego wzorca zostanie utworzona, zaktualizowana lub usunięta.
Informacje o pisaniu funkcji wywoływanych przez Bazę danych czasu rzeczywistego znajdziesz w artykule Aktywatory Bazy danych czasu rzeczywistego w Cloud Functions dokumentacji.
Definicja funkcji (tylko 1 generacji)
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.
    // ...
  });
Deklaracja zasobu (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: ...
W tabeli poniżej znajdziesz informacje o tym, jak określać poszczególne obsługiwane Cloud Firestoretypy zdarzeń:
| Aktywator zdarzeń Cloud Functions | eventType | Opis | 
|---|---|---|
| onCreate() | providers/google.firebase.database/eventTypes/ref.create | Data utworzenia | 
| onDelete() | providers/google.firebase.database/eventTypes/ref.delete | Usunięto dane | 
| onUpdate() | providers/google.firebase.database/eventTypes/ref.update | Dane zostały zaktualizowane | 
| onWrite() | providers/google.firebase.database/eventTypes/ref.write | Dane zostały utworzone, usunięte lub zaktualizowane | 
Jeśli chcesz, aby użytkownicy mogli konfigurować ścieżkę do obserwowania podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji funkcji resource:
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
Remote Config
Funkcja wywoływana przez Zdalną konfigurację jest uruchamiana, gdy szablon parametru projektu zostanie zaktualizowany.
Więcej informacji o pisaniu funkcji wywoływanych przez Zdalną konfigurację znajdziesz w dokumentacji Cloud Functions na temat wyzwalaczy Zdalnej konfiguracji.
Definicja funkcji (tylko 1 generacji)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.firebase.remoteconfig.update
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...
Cloud Storage
Funkcja aktywowana przez Cloud Storage jest uruchamiana, gdy obiekt zostanie utworzony, zarchiwizowany lub usunięty albo gdy zmienią się jego metadane.
Więcej informacji o pisaniu funkcji aktywowanych przez Cloud Storage znajdziesz w sekcji Aktywatory Cloud Storage w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacji)
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) => {
  // ...
});
Deklaracja zasobu (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: ...
W tabeli poniżej znajdziesz informacje o tym, jak określać poszczególne obsługiwane Cloud Storagetypy zdarzeń:
| Aktywator zdarzeń Cloud Functions | eventType | Opis | 
|---|---|---|
| onFinalize() | google.storage.object.finalize | Utworzono obiekt | 
| onMetadataUpdate() | google.storage.object.metadataUpdate | Zaktualizowano metadane obiektu | 
| onArchive() | google.storage.object.archive | Obiekt został zarchiwizowany | 
| onDelete() | google.storage.object.delete | Obiekt został usunięty | 
Jeśli chcesz, aby użytkownicy mogli konfigurować zasobnik pamięci podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji funkcji resource:
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 Lab
Funkcja wywołana przez Laboratorium Firebase jest uruchamiana, gdy zestaw testów zakończy testy.
Informacje o pisaniu funkcji wywoływanych przez Laboratorium znajdziesz w sekcji Aktywatory Laboratorium Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacji)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});
Deklaracja zasobu (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 reguły alertów
Funkcja wywoływana przez Crashlytics jest uruchamiana, gdy Crashlytics opublikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Aktywatory alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacji)
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) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
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: ...
W przypadku parametru alerttype możesz użyć tych wartości:
- crashlytics.newFatalIssue
- crashlytics.newNonfatalIssue
- crashlytics.regression
- crashlytics.stabilityDigest
- crashlytics.velocity
- crashlytics.newAnrIssue
Performance Monitoring reguły alertów
Funkcja wywoływana przez Performance Monitoring jest uruchamiana, gdy Performance Monitoring opublikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Aktywatory alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacji)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
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: ...
App Distribution reguły alertów
Funkcja wywoływana przez App Distribution jest uruchamiana, gdy App Distribution opublikuje alert.
Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w sekcji Aktywatory alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacji)
import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
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: ...
W przypadku parametru alerttype możesz użyć tych wartości:
- appDistribution.newTesterIosDevice
- appDistribution.inAppFeedback
Aktywatory zdarzeń niestandardowych (Eventarc)
Funkcja wywoływana przez Eventarc jest uruchamiana, gdy określony typ zdarzenia zostanie opublikowany w określonym kanale.
Informacje o pisaniu funkcji wywoływanych przez Eventarc znajdziesz w dokumentacji w artykule Cloud Functions Tworzenie i obsługa niestandardowych aktywatorów zdarzeń.
Możesz też publikować zdarzenia z rozszerzeń, aby umożliwić użytkownikom wstawianie niestandardowej logiki do rozszerzenia. Zobacz Używanie w rozszerzeniu niestandardowej logiki dostarczonej przez dewelopera.
Definicja funkcji (tylko 2 generacji)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});
Deklaracja zasobu (extension.yaml)
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: ...
Kanał musi już istnieć w momencie instalacji rozszerzenia. Jeśli na przykład korzystasz ze zdarzeń niestandardowych z innego rozszerzenia, które tworzy kanał, poproś użytkowników o najpierw zainstalowanie tego rozszerzenia.
Powyższy przykład utworzy regułę opartą na zdarzeniu niestandardowym dla kanału „default” Firebase w regionie us-central1. Możesz dostosować nazwę i region kanału za pomocą parametrów. Przykład:
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}