Napisz Cloud Functions dla rozszerzenia

Tworząc rozszerzenie, piszesz jego logikę za pomocą Cloud Functions, w podobny sposób, w jaki piszesz funkcję, która będzie używana tylko w Twoim własnym projekcie. Deklarujesz swoje funkcje w pliku extension.yaml , a gdy użytkownicy instalują Twoje rozszerzenie, funkcje te zostaną wdrożone w ich projekcie.

Ogólne informacje na temat korzystania z Cloud Functions znajdziesz w dokumentacji Cloud Functions.

Funkcje chmurowe pierwszej i drugiej generacji

Firebase obsługuje funkcje chmurowe pierwszej i drugiej generacji . Jednak rozszerzenia Firebase mają obecnie pewne ograniczenia dotyczące generowania funkcji chmury, których można używać z określonymi typami wyzwalaczy. Z tego powodu wiele rozszerzeń zawiera kombinację funkcji pierwszej i drugiej generacji.

Poniżej opisano obsługę generowania funkcji dla każdego typu wyzwalacza.

Uwagi specjalne

  • 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 obejrzenia, a odpowiadająca jej deklaracja w extension.yaml zawiera 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ślanie skonfigurowanej wartości w definicji funkcji niezależnie od tego, dla celów dokumentacji. Przykłady na tej stronie są zgodne z tym wzorcem.

  • Pakiet SDK Cloud Functions pierwszej generacji zawiera metodęfunctions.config functions.config() i functions:config:set CLI, których można używać do pracy ze sparametryzowanymi wartościami w funkcjach pierwszej generacji. Ta technika jest przestarzała w Cloud Functions i nie będzie w ogóle działać w rozszerzeniu. Zamiast tego użyj functions.params (zalecane) lub process.env .

Korzystanie z TypeScriptu

Większość dokumentacji dotyczącej tworzenia własnego rozszerzenia opisuje przepływy pracy przy użyciu JavaScript dla Cloud Functions dla Firebase. Zamiast tego możesz jednak pisać funkcje za pomocą TypeScript.

W rzeczywistości wszystkie oficjalne rozszerzenia Firebase są napisane w TypeScript. Możesz przejrzeć te rozszerzenia, aby poznać najlepsze praktyki używania TypeScriptu w swoim rozszerzeniu.

Jeśli napiszesz funkcje rozszerzenia w TypeScript, przed zainstalowaniem rozszerzenia musisz wykonać następujące czynności:

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

    Polecenie firebase ext:dev:init pozwala wybrać TypeScript do pisania funkcji. Polecenie zapewnia kompletne rozszerzenie do zainstalowania , a także skrypt kompilacji, który można uruchomić za pomocą npm run build .

  2. W pliku package.json pamiętaj o wskazaniu main pola na wygenerowany kod JavaScript.

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

Obsługiwane wyzwalacze funkcji

Wyzwalacze HTTP

Funkcja wyzwalana przez protokół HTTP jest wdrażana w publicznym punkcie końcowym https i uruchamiana po uzyskaniu dostępu do punktu końcowego.

Informacje na temat pisania funkcji wyzwalanych przez HTTP można znaleźć w artykule Wywoływanie funkcji za pośrednictwem żądań HTTP w dokumentacji Cloud Functions.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.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 wyzwalanych przez HTTP, ale implementują protokół, który ułatwia ich wywoływanie z kodu po stronie klienta.

Zobacz Funkcje wywoływania z aplikacji w dokumentacji Cloud Functions, aby uzyskać informacje na temat korzystania z funkcji wywoływalnych.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.yaml)

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

Zaplanowane wyzwalacze funkcji

Zaplanowana funkcja jest uruchamiana wielokrotnie w oparciu o konfigurowalny harmonogram.

Aby uzyskać informacje na temat pisania zaplanowanych funkcji, zobacz Funkcje planowania w dokumentacji Cloud Functions.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.yaml)

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

Oto dostępne podpola scheduleTrigger :

Pole Opis
schedule
(wymagany)

Częstotliwość, z jaką funkcja ma działać.

W tym polu można akceptować ciągi znaków o dowolnej składni (wymagane jest zawijanie w apostrofy ):

timeZone
(opcjonalny)

Strefa czasowa, w której będzie uruchamiany 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 parametru 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

Wyzwalacze kolejki zadań

Funkcja kolejki zadań jest wyzwalana w wyniku zdarzeń cyklu życia rozszerzenia lub po ręcznym dodaniu do kolejki zadań rozszerzenia za pomocą metody TaskQueue.enqueue() pakietu Admin SDK.

Zobacz Obsługa zdarzeń cyklu życia rozszerzenia , aby uzyskać informacje na temat pisania funkcji obsługujących zdarzenia cyklu życia.

Informacje na temat pisania funkcji kolejki zadań można znaleźć w sekcji Funkcje umieszczania w kolejce za pomocą zadań Cloud Tasks w dokumentacji Cloud Functions.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.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 dostosowują limity szybkości i zachowanie kolejki zadań ponawiania (patrz Dostrajanie kolejki zadań ).

Jeśli chcesz uruchomić swoją funkcję na podstawie zdarzeń cyklu życia rozszerzenia, dodaj rekordy lifecycleEvents z nazwą funkcji i opcjonalnym komunikatem dotyczącym przetwarzania, który będzie wyświetlany 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

Analityka

Funkcja uruchamiana przez Analytics jest uruchamiana po zarejestrowaniu określonego zdarzenia Analytics.

Informacje na temat pisania funkcji wyzwalanych przez Analytics znajdziesz w dokumentacji funkcji Cloud Functions dotyczącej wyzwalaczy Google Analytics.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.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, które będzie nasłuchiwane podczas instalowania Twojego 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.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

Uwierzytelnianie

Funkcja wyzwalana uwierzytelnianiem jest uruchamiana podczas tworzenia lub usuwania użytkownika.

Zobacz wyzwalacze uwierzytelniania Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych uwierzytelnianiem.

Definicja funkcji (tylko 1. generacja)

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

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

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

Deklaracja zasobu (rozszerzenie.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 poniższej tabeli pokazano, jak określić każdy z obsługiwanych typów zdarzeń uwierzytelniania:

Wyzwalacz zdarzenia Cloud Functions eventType Opis
onCreate() providers/firebase.auth/eventTypes/user.create Utworzono nowego użytkownika
onDelete() providers/firebase.auth/eventTypes/user.delete Użytkownik usunięty

Chmura Firestore

Funkcja wyzwalana przez Cloud Firestore jest uruchamiana po utworzeniu, zaktualizowaniu lub usunięciu dokumentu.

Zobacz wyzwalacze Cloud Firestore w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez Firestore.

Definicja funkcji (tylko 1. generacja)

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

Poniższa tabela pokazuje, jak określić każdy z obsługiwanych typów zdarzeń Cloud Firestore:

Wyzwalacz zdarzenia Cloud Functions eventType Opis
onCreate() providers/cloud.firestore/eventTypes/document.create Utworzono nowy dokument
onDelete() providers/cloud.firestore/eventTypes/document.delete Dokument usunięty
onUpdate() providers/cloud.firestore/eventTypes/document.update Dokument zaktualizowany
onWrite() providers/cloud.firestore/eventTypes/document.write Dokument został utworzony, usunięty lub zaktualizowany

Jeśli chcesz, aby użytkownicy mogli skonfigurować ścieżkę dokumentu 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/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 wyzwalana przez Pub/Sub jest uruchamiana, gdy wiadomość jest publikowana w określonym temacie.

Informacje na temat pisania funkcji wyzwalanych przez Pub/Sub znajdziesz w dokumentacji funkcji Cloud Functions.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.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 konfigurować temat Pub/Sub podczas instalowania Twojego 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: 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

Baza danych czasu rzeczywistego

Funkcja wyzwalana przez bazę danych Realtime Database jest uruchamiana, gdy ścieżka zgodna z określonym wzorcem jest tworzona, aktualizowana lub usuwana.

Informacje na temat pisania funkcji wyzwalanych przez RTDB można znaleźć w sekcji Wyzwalacze bazy danych czasu rzeczywistego w dokumentacji Cloud Functions.

Definicja funkcji (tylko 1. generacja)

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

Poniższa tabela pokazuje, jak określić każdy z obsługiwanych typów zdarzeń Cloud Firestore:

Wyzwalacz zdarzenia Cloud Functions eventType Opis
onCreate() providers/google.firebase.database/eventTypes/ref.create Utworzono dane
onDelete() providers/google.firebase.database/eventTypes/ref.delete Dane usunięte
onUpdate() providers/google.firebase.database/eventTypes/ref.update Dane 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 oglądania podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do parametru 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

Zdalna konfiguracja

Funkcja wyzwalana przez zdalną konfigurację jest uruchamiana po zaktualizowaniu szablonu parametrów projektu.

Informacje na temat pisania funkcji wyzwalanych przez Zdalną konfigurację można znaleźć w sekcji Wyzwalacze zdalnej konfiguracji w dokumentacji Cloud Functions.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.yaml)

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

Magazyn w chmurze

Funkcja uruchamiana przez Cloud Storage jest uruchamiana, gdy obiekt jest tworzony, archiwizowany lub usuwany albo gdy zmieniają się jego metadane.

Informacje na temat pisania funkcji wyzwalanych przez magazyn można znaleźć w sekcji Wyzwalacze Cloud Storage w dokumentacji Cloud Functions.

Definicja funkcji (tylko 1. generacja)

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

Poniższa tabela pokazuje, jak określić każdy z obsługiwanych typów zdarzeń Cloud Storage:

Wyzwalacz zdarzenia Cloud Functions eventType Opis
onFinalize() google.storage.object.finalize Obiekt utworzony
onMetadataUpdate() google.storage.object.metadataUpdate Zaktualizowano metadane obiektu
onArchive() google.storage.object.archive Obiekt został zarchiwizowany
onDelete() google.storage.object.delete Obiekt 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 resource funkcji:

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

Laboratorium Testowe

Funkcja wyzwalana przez laboratorium testowe jest uruchamiana po zakończeniu testów macierzy testowej.

Zobacz wyzwalacze Firebase Test Lab w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez laboratorium testowe.

Definicja funkcji (tylko 1. generacja)

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

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

Deklaracja zasobu (rozszerzenie.yaml)

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

Wyzwalacze alertów Crashlytics

Funkcja wyzwalana przez Crashlytics jest uruchamiana, gdy Crashlytics publikuje alert.

Zobacz wyzwalacze alertów Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez alerty.

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

Można użyć następujących wartości dla alerttype

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

Wyzwalacze alertów monitorowania wydajności

Funkcja wyzwalana przez monitorowanie wydajności jest uruchamiana, gdy monitorowanie wydajności publikuje alert.

Zobacz wyzwalacze alertów Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez alerty.

Definicja funkcji (tylko 2. generacji)

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

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

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

Wyzwalacze alertów dotyczących dystrybucji aplikacji

Funkcja wyzwalana przez App Distribution jest uruchamiana, gdy App Distribution opublikuje alert.

Zobacz wyzwalacze alertów Firebase w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez alerty.

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

Można użyć następujących wartości dla alerttype

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

Niestandardowe wyzwalacze zdarzeń (Eventarc)

Funkcja wyzwalana przez Eventarc jest uruchamiana, gdy określony typ zdarzenia zostanie opublikowany na określonym kanale.

Zobacz Tworzenie i obsługa niestandardowych wyzwalaczy zdarzeń w dokumentacji Cloud Functions, aby uzyskać informacje na temat pisania funkcji wyzwalanych przez Eventarc.

Możesz także publikować zdarzenia ze swoich rozszerzeń, aby umożliwić użytkownikom wstawienie niestandardowej logiki do rozszerzenia. Zobacz Używanie niestandardowej logiki dostarczonej przez programistę w rozszerzeniu .

Definicja funkcji (tylko 2. generacji)

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

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

Deklaracja zasobu (rozszerzenie.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 momencie zainstalowania rozszerzenia. Na przykład, jeśli zależy Ci na zdarzeniach niestandardowych z innego rozszerzenia, które tworzy kanał, poinstruuj użytkowników, aby najpierw zainstalowali to rozszerzenie.

Powyższy przykład utworzyłby niestandardowy wyzwalacz zdarzenia dla „domyślnego” kanału Firebase w regionie us-central1 . Możesz dostosować nazwę kanału i region za pomocą parametrów. Na 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}