Zapisywanie funkcji w Cloud Functions na potrzeby rozszerzenia

Podczas tworzenia rozszerzenia logikę piszesz za pomocą Cloud Functions, podobnie jak funkcję, która będzie używana tylko w Twoim projekcie. Funkcje deklarujesz w pliku extension.yaml, a gdy użytkownicy zainstalują rozszerzenie, zostaną one wdrożone do ich projektu.

Ogólne informacje o używaniu Cloud Functions znajdziesz w dokumentacji Cloud Functions.

Pierwsza i druga generacja Cloud Functions

Firebase obsługuje zarówno urządzenia pierwszej, jak i drugiej generacjiCloud Functions. Jednak rozszerzenia Firebase mają obecnie pewne ograniczenia dotyczące tego, którego generowania funkcji w chmurze można używać z określonymi typami aktywatorów. Z tego powodu wiele rozszerzeń zawiera funkcje 1 i 2 generacji.

Poniżej znajdziesz informacje o obsługiwanych funkcjach w przypadku poszczególnych typów reguł.

Uwagi specjalne

  • Niektóre definicje funkcji wymagają podania informacji określonych również w pliku extension.yaml. Na przykład Cloud Firestore ma metodę document(), która określa wzór dokumentu do obserwowania, a odpowiadająca jej deklaracja w funkcji extension.yaml ma 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.

    Powszechną praktyką jest określenie skonfigurowanego wartości w definicji funkcji niezależnie od tego ze względu na dokumentację. Przykłady na tej stronie są zgodne z tym wzorcem.

  • Pakiet SDK Cloud Functions 1 generacji zawiera metodę functions.config() i polecenie interfejsu wiersza poleceń functions:config:set, których można używać do pracy z wartościami sparametryzowanymi w funkcjach 1 generacji. Ta technika jest wycofana w Cloud Functionsw ogóle nie będzie działać w rozszerzeniu. Zamiast tego użyj modułu functions.params (zalecany) lub process.env.

Korzystanie z TypeScript

Większość dokumentacji dotyczącej tworzenia własnych rozszerzeń opisuje przepływy pracy związane z użyciem JavaScriptu na potrzeby Cloud Functions for Firebase. Możesz jednak zamiast tego napisać swoje funkcje za pomocą TypeScript.

W zasadzie wszystkie oficjalne Firebaserozszerzenia są napisane w TypeScript. Możesz się z nimi zapoznać i sprawdzić, jak stosować w nich język TypeScript.

Jeśli funkcje rozszerzenia są napisane w języku TypeScript, przed zainstalowaniem rozszerzenia musisz wykonać te czynności:

  1. Skompiluj kod źródłowy funkcji rozszerzenia na kod JavaScript.

    Polecenie firebase ext:dev:init pozwala wybrać TypeScript do pisania funkcji. Ten polecenie umożliwia stworzenie kompletnego, instalowanego rozszerzenia oraz skryptu kompilacji, który możesz uruchomić za pomocą narzędzia npm run build.

  2. W pliku package.json umieść pole main w wygenerowanym kodzie JavaScript.

  3. Jeśli instalujesz lub przesyłasz rozszerzenie ze źródła lokalnego, najpierw skompiluj pliki TypeScript.

Obsługiwane funkcje aktywatora

Aktywatory HTTP

Funkcja wywoływana przez HTTP jest wdrażana w publicznym punkcie końcowym https i wykonywana, gdy nastąpi dostęp do tego punktu końcowego.

Informacje o tworzeniu funkcji wywoływanych przez HTTP znajdziesz w sekcji Wywoływanie funkcji przez żądania HTTP w dokumentacji Cloud Functions.

Definicja funkcji (tylko w przypadku funkcji 1 generacji)

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

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

Deklaracja zasobu (plik extension.yaml)

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

Funkcje wywoływane

Funkcje wywoływane są podobne do funkcji wywoływanych przez HTTP, ale implementują protokół, który ułatwia ich wywoływanie z kodu po stronie klienta.

Informacje o używaniu funkcji wywoływalnych znajdziesz w dokumentacji Cloud Functions w sekcji Wywoływanie funkcji z aplikacji.

Definicja funkcji (tylko w przypadku funkcji 1 generacji)

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

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

Deklaracja zasobu (plik extension.yaml)

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

Zaplanowane aktywatory funkcji

Funkcja zaplanowana jest uruchamiana wielokrotnie zgodnie z harmonogramem, który można dostosować.

Informacje o tworzeniu funkcji zaplanowanych znajdziesz w artykule Funkcje planowania w dokumentacji Cloud Functions.

Definicja funkcji (tylko w przypadku funkcji 1 generacji)

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

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

Deklaracja zasobu (plik 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 scheduleTrigger:

Pole Opis
schedule
(wymagane)

Częstotliwość, z jaką funkcja ma być wykonywana.

To pole może akceptować ciągi tekstowe używane w dowolnej składni (wymagane jest umieszczenie cudzysłowów pojedynczych):

timeZone
(opcjonalnie)

Strefa czasowa, w której będzie działać harmonogram.

Jeśli chcesz, aby użytkownicy mogli konfigurować harmonogram podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji resource funkcji:

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

Aktywatory kolejki zadań

Funkcja kolejki zadań jest wywoływana w wydarzeniach cyklu życia rozszerzenia lub gdy zostanie ręcznie dodana do kolejki zadań rozszerzenia za pomocą metodyTaskQueue.enqueue() w administracyjnym interfejsie programistycznym (SDK).

Więcej informacji o pisaniu funkcji obsługujących zdarzenia cyklu życia rozszerzenia znajdziesz w artykule Obsługa zdarzeń cyklu życia rozszerzenia.

Informacje o tworzeniu funkcji kolejki zadań znajdziesz w dokumentacji Cloud Functions: Umieszczanie funkcji w kolejce za pomocą Cloud Tasks.

Definicja funkcji (tylko w przypadku funkcji 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 {} lub mapę opcji, które dostrajają limity szybkości i ponowne działanie kolejki zadań (patrz Dostrajanie kolejki zadań).

Jeśli chcesz, aby funkcja była wywoływana w reakcji na zdarzenia cyklu życia rozszerzenia, dodaj rekordy lifecycleEvents z nazwą funkcji i opcjonalną wiadomością przetwarzania, która będzie wyświetlana w konsoli Firebase 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 wywoływana przez Analytics jest wykonywana, gdy zostanie zarejestrowane określone zdarzenie Analytics.

Informacje o tworzeniu funkcji wywoływanych przez Analytics znajdziesz w artykule o regułach Google Analytics w dokumentacji Cloud Functions.

Definicja funkcji (tylko 1 generacji)

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

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

Deklaracja zasobu (plik 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 skonfigurować zdarzenie Analytics do nasłuchiwania podczas instalacji rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołuj 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 działa, gdy tworzysz lub usuwasz użytkownika.

Informacje o pisaniu funkcji wywoływanych przez mechanizm uwierzytelniania znajdziesz w dokumentacji Cloud Functions dotyczącej reguł 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 sposobie określania poszczególnych obsługiwanych typów zdarzeń Authentication:

Cloud Functions reguła zdarzenia 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 aktywowana przez Cloud Firestore jest wykonywana, gdy dokument zostanie utworzony, zaktualizowany lub usunięty.

Więcej informacji o tworzeniu funkcji aktywowanych przez Firestore znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji za pomocą Cloud Firestore.

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 (plik 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 opis sposobu określania poszczególnych obsługiwanych typów zdarzeń Cloud Firestore:

Cloud Functions aktywator zdarzenia 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 zmodyfikowany.

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 resource swojej funkcji:

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 wykonywana, gdy wiadomość zostanie opublikowana w określonym temacie.

Informacje o pisaniu funkcji aktywowanych przez Pub/Sub znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji 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 (plik 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 tworzeniu funkcji wywoływanych przez bazy danych czasu rzeczywistego znajdziesz w sekcji Aktywatory bazy danych czasu rzeczywistego w dokumentacji Cloud Functions.

Definicja funkcji (tylko w przypadku funkcji 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 (plik 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 opis sposobu określania poszczególnych obsługiwanych typów zdarzeń Cloud Firestore:

Cloud Functions aktywator zdarzenia eventType Opis
onCreate() providers/google.firebase.database/eventTypes/ref.create Data utworzenia
onDelete() providers/google.firebase.database/eventTypes/ref.delete Dane zostały usunięte
onUpdate() providers/google.firebase.database/eventTypes/ref.update Dane zostały zaktualizowane
onWrite() providers/google.firebase.database/eventTypes/ref.write Dane utworzone, usunięte lub zaktualizowane

Jeśli chcesz, aby użytkownicy mogli skonfigurować ścieżkę do obserwowania podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji resource funkcji:

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 wykonywana, gdy szablon parametrów projektu zostanie zaktualizowany.

Więcej informacji o tworzeniu funkcji wywoływanych przez Zdalną konfigurację znajdziesz w dokumentacji Cloud Functions (sekcja Remote Config triggers).

Definicja funkcji (tylko w przypadku funkcji 1 generacji)

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

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

Deklaracja zasobu (plik 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 wywoływana przez Cloud Storage jest wykonywana, gdy tworzysz, archiwizujesz lub usuwasz obiekt albo gdy zmieniają się jego metadane.

Informacje o tworzeniu funkcji aktywowanych przez Cloud Storage znajdziesz w sekcji Aktywatory Cloud Storage w dokumentacji Cloud Functions.

Definicja funkcji (tylko w przypadku funkcji 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 (plik 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 opis sposobu określania poszczególnych obsługiwanych typów zdarzeń Cloud Storage:

Cloud Functions aktywator zdarzenia eventType Opis
onFinalize() google.storage.object.finalize Obiekt został utworzony
onMetadataUpdate() google.storage.object.metadataUpdate Metadane obiektu zostały zaktualizowane
onArchive() google.storage.object.archive Obiekt został zarchiwizowany
onDelete() google.storage.object.delete Obiekt został usunięty

Jeśli chcesz, aby użytkownicy mogli skonfigurować 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ływana przez Laboratorium Firebase jest wykonywana, gdy zestaw testów zakończy testy.

Informacje o pisaniu funkcji wywoływanych przez Laboratorium Firebase znajdziesz w dokumentacji Cloud Functions.

Definicja funkcji (tylko w przypadku funkcji 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 aktywatora alertów

Funkcja wywoływana przez Crashlytics jest wykonywana, gdy Crashlytics publikuje alert.

Informacje o tworzeniu funkcji wywoływanych przez alerty znajdziesz w sekcji Reguły alertów Firebase w dokumentacji Cloud Functions.

Definicja funkcji (dotyczy tylko funkcji 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)

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: ...

W przypadku wartości alerttype możesz użyć tych wartości:

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

Performance Monitoring reguł alertów

Funkcja wyzwalana przez Performance Monitoring jest uruchamiana po opublikowaniu alertu Performance Monitoring.

Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji alertów Firebase.

Definicja funkcji (dotyczy tylko funkcji 2 generacji)

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

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

Deklaracja zasobu (plik 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: ...

App Distribution reguł alertów

Funkcja wywoływana przez App Distribution działa, gdy App Distribution publikuje alert.

Więcej informacji o pisaniu funkcji wywoływanych przez alerty znajdziesz w dokumentacji Cloud Functions dotyczącej aktywacji alertów Firebase.

Definicja funkcji (dotyczy tylko funkcji 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)

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: ...

W przypadku wartości alerttype możesz użyć tych wartości:

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

Niestandardowe aktywatory zdarzeń (Eventarc)

Funkcja wywoływana przez Eventarc jest wykonywana, gdy określony typ zdarzenia zostanie opublikowany w konkretnym kanale.

Więcej informacji o pisaniu funkcji wywoływanych przez zdarzenia Eventarc znajdziesz w dokumentacji 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. Zapoznaj się z artykułem Używanie logiki niestandardowej udostępnionej przez dewelopera w rozszerzeniu.

Definicja funkcji (tylko 2 generacji)

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

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

Deklaracja zasobu (plik 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: ...

Kanał musi już istnieć w chwili zainstalowania rozszerzenia. Jeśli na przykład zależy Ci na zdarzeniach niestandardowych z innego rozszerzenia, które tworzy kanał, poproś użytkowników, aby najpierw zainstalowali to rozszerzenie.

W tym przykładzie reguła niestandardowa zostałaby utworzona dla kanału Firebase „domyślny” w regionie us-central1. Za pomocą parametrów możesz dostosować nazwę kanału i region. 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}