Zapisywanie funkcji w Cloud Functions na potrzeby rozszerzenia

Gdy tworzysz rozszerzenie, podajesz jego logikę w kodzie Cloud Functions w języku: w taki sam sposób, w jaki można by napisać funkcję, której można użyć wyłącznie do swojego własnego projektu. W pliku extension.yaml zadeklarujesz swoje funkcje, gdy użytkownicy instalują Twoje rozszerzenie, te funkcje są wdrażane w projektach AI.

Ogólne informacje o korzystaniu z aplikacji znajdziesz w dokumentacji Cloud Functions. Cloud Functions

Cloud Functions 1 i 2 generacji

Firebase obsługuje zarówno Cloud Functions 1 i 2 generacji. Pamiętaj jednak, że Firebase Rozszerzenia mają obecnie pewne ograniczenia dotyczące tego, która generacja usługi Google Cloud której można używać z określonymi typami aktywatorów. Z tego powodu wiele zawierają kombinację funkcji 1 i 2 generacji.

Obsługa generowania funkcji jest podawana dla każdego typu aktywatora opisanego poniżej.

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 document(), która określa wzorzec dokumentu do obserwacji i jego odpowiednia deklaracja w funkcji extension.yaml ma pole resource, które określa to samo.

    W takich sytuacjach konfiguracja określona w extension.yaml jest używany plik, a konfiguracja określona w definicji funkcji to zignorowano.

    Powszechną praktyką jest podawanie skonfigurowanego wartości w funkcji niezależnie od jego definicji, ze względu na dokumentację. Przykłady są zgodne z tym wzorcem.

  • Pakiet SDK Cloud Functions 1 generacji ma metodę functions.config() i Polecenie interfejsu wiersza poleceń functions:config:set, którego można używać do pracy wartości z parametrami w funkcjach 1 generacji. Ta metoda została wycofana w Cloud Functions i w ogóle nie będzie działać w rozszerzeniu. Zamiast tego użyj moduł functions.params (zalecany) lub process.env.

Korzystanie z TypeScript

Większość dokumentacji dotyczącej tworzenia własnych rozszerzeń opisuje przepływy pracy używając języka JavaScript na stronie Cloud Functions for Firebase. Możesz jednak zamiast tego napisać za pomocą TypeScriptu.

Wszystkie oficjalne rozszerzenia do aplikacji Firebase są napisane w języku TypeScript. Możesz je sprawdzić pod kątem metod korzystania z TypeScriptu w rozszerzeniu.

Jeśli wpiszesz funkcje rozszerzenia w TypeScript, musisz wpisać wykonaj te czynności:

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

    firebase ext:dev:init pozwala wybrać skrypt TypeScript do pisania funkcji. Polecenie zawiera kompletne rozszerzenie, które można zainstalować, oraz kompilację skrypt, który możesz uruchomić przy pomocy npm run build.

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

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

Aktywatory obsługiwanych funkcji

Aktywatory HTTP

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

Zapoznaj się z sekcją Wywoływanie funkcji za pomocą żądań HTTP w artykule Cloud Functions. dokumentacji z informacjami o tworzeniu funkcji wyzwalanych przez HTTP.

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ływane

Funkcje wywoływalne są podobne do funkcji wywoływanych przez HTTP, ale implementują funkcję dzięki któremu można wygodnie wykonywać połączenia z poziomu kodu po stronie klienta.

Zapoznaj się z sekcją 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 zaplanowanej funkcji

Zaplanowana funkcja jest uruchamiana wielokrotnie na podstawie konfigurowalnego harmonogramu.

Zapoznaj się z artykułem Planowanie funkcji w dokumentacji Cloud Functions dotyczącej informacje na temat pisania zaplanowanych funkcji.

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 pola scheduleTrigger:

Pole Opis
schedule
(wymagane)

Częstotliwość uruchamiania funkcji.

To pole może akceptować ciągi tekstowe, które korzystają z dowolnej składni (zawijania pojedynczy cudzysłów:

timeZone
(opcjonalnie)

Strefa czasowa, w której będzie uruchamiany harmonogram.

Jeśli chcesz, aby użytkownicy mogli skonfigurować harmonogram dodaj do pliku extension.yaml nowy parametr i uwzględnij odwołanie do 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

Aktywatory kolejki zadań

Funkcja kolejki zadań jest wyzwalana w cyklu życia rozszerzenia zdarzeń lub gdy zostały ręcznie dodane do kolejki zadań rozszerzenia na karcie Administracja Metoda TaskQueue.enqueue() w pakiecie SDK.

Informacje o zapisie znajdziesz w artykule Obsługa zdarzeń cyklu życia rozszerzenia. które obsługują zdarzenia cyklu życia.

Zapoznaj się z artykułem na temat umieszczania funkcji w kolejce za pomocą Cloud Tasks (w języku: Cloud Functions). dokumentacji z informacjami na temat pisania funkcji kolejek zadań.

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 {} lub mapę opcji, która dostrajać limity szybkości i ponawiać próby w kolejce zadań (patrz Dostrajanie zadania kolejka).

Jeśli chcesz aktywować swoją funkcję przez zdarzenia cyklu życia rozszerzenia, dodaj lifecycleEvents rekordy z nazwą funkcji i opcjonalnym parametrem przetwarzam wiadomość, która będzie wyświetlana w konsoli Firebase, gdy gdy rozpocznie się przetwarzanie.

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 wyzwalana przez Analytics jest uruchamiana po wystąpieniu określonego zdarzenia Analytics zapisane.

Zapoznaj się z sekcją Aktywatory Google Analytics w dokumentacji Cloud Functions dotyczącej: jak pisać funkcje wywoływane przez 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 skonfigurować nasłuchiwanie zdarzenia Analytics podczas instalacji rozszerzenia dodaj do parametru extension.yaml nowy parametr i odwołaj się do parametru 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

Authentication

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

Zobacz reguły uwierzytelniania Firebase w Cloud Functions dokumentacji z informacjami na temat tworzenia funkcji wyzwalanych przez uwierzytelnianie.

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 pokazujemy, jak określić każde z obsługiwanych zdarzeń Authentication typy:

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 wyzwalana przez Cloud Firestore jest uruchamiana, gdy dokument jest tworzony, aktualizowany lub usunięte.

Zapoznaj się z aktywatorami Cloud Firestore w dokumentacji Cloud Functions dotyczącej informacje na temat zapisywania funkcji wyzwalanych przez 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 (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 pokazujemy, jak określić każdy z obsługiwanych elementów (Cloud Firestore). typy zdarzeń:

Cloud Functions reguła 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 zaktualizowany

Jeśli chcesz, aby użytkownicy mogli konfigurować ścieżkę dokumentu podczas instalacji rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołania parametr 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 wyzwalana przez Pub/Sub jest uruchamiana po opublikowaniu wiadomości w określonym miejscu temat.

Zapoznaj się z sekcją Aktywatory Pub/Sub w dokumentacji Cloud Functions dotyczącej jak pisać funkcje wyzwalane przez 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 konfigurować temat Pub/Sub, gdy: zainstaluje Twoje rozszerzenie, dodaj nowy parametr do pliku extension.yaml i odwołuj się do parametru 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

Realtime Database

Funkcja wyzwalana przez Bazę danych czasu rzeczywistego jest uruchamiana, gdy ścieżka pasuje do określonej gdy zostanie utworzony, zaktualizowany lub usunięty.

Zapoznaj się z sekcją Aktywatory Bazy danych czasu rzeczywistego w dokumentacji Cloud Functions. .

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 pokazujemy, jak określić każdy z obsługiwanych elementów (Cloud Firestore). typy zdarzeń:

Cloud Functions reguła zdarzenia eventType Opis
onCreate() providers/google.firebase.database/eventTypes/ref.create Dane zostały utworzone
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 konfigurować ścieżkę do obserwowania podczas instalacji rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołania parametr 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 wyzwalana przez Zdalną konfigurację jest uruchamiana, gdy szablon parametrów projektu jest Zaktualizowano.

Zapoznaj się z sekcją Aktywatory Zdalnej konfiguracji w dokumentacji Cloud Functions dotyczącej: znajdziesz w nim informacje o pisaniu funkcji wyzwalanych przez Zdalną konfigurację.

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 wyzwalana przez Cloud Storage jest uruchamiana podczas tworzenia, zarchiwizowania lub archiwizacji obiektu lub gdy zmienią się jego metadane.

Zapoznaj się z aktywatorami Cloud Storage w dokumentacji Cloud Functions dotyczącej jak pisać funkcje aktywowane przez Cloud Storage.

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 pokazujemy, jak określić każdy z obsługiwanych elementów (Cloud Storage). typy zdarzeń:

Cloud Functions reguła 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 konfigurować zasobnik na dane podczas instalacji rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołania parametr 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 wyzwalana przez Laboratorium jest uruchamiana, gdy tablica testów zakończy testy.

Zobacz 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 aktywatora alertów

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

Zapoznaj się z aktywatorami alertów Firebase w dokumentacji Cloud Functions dla na temat tworzenia funkcji wywoływanych 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 (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: ...

Możesz użyć tych wartości w polu alerttype

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

Performance Monitoring aktywatora alertów

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

Zapoznaj się z aktywatorami alertów Firebase w dokumentacji Cloud Functions dla na temat tworzenia funkcji wywoływanych przez alerty.

Definicja funkcji (tylko 2 generacji)

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

export const yourFunctionName = onThresholdAlertPublished((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: performance.threshold
  - name: anotherFunction
    type: ...

App Distribution aktywatora alertów

Funkcja wyzwalana przez App Distribution jest uruchamiana po opublikowaniu alertu przez App Distribution.

Zapoznaj się z aktywatorami alertów Firebase w dokumentacji Cloud Functions dla na temat tworzenia funkcji wywoływanych 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 (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: ...

Możesz użyć tych wartości w polu alerttype

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

Reguły zdarzeń niestandardowych (Eventarc)

Funkcja wyzwalana przez Eventarc jest uruchamiana po opublikowaniu określonego typu zdarzenia w do konkretnego kanału.

Zapoznaj się z sekcją Tworzenie i obsługa reguł niestandardowych zdarzeń w dokumencie Cloud Functions. dokumentacji z informacjami o tworzeniu funkcji aktywowanych przez Eventarc.

Możesz też publikować zdarzenia z rozszerzeń, aby umożliwić użytkownikom wstawianie treści w Twoje rozszerzenie. Patrz: Korzystanie z niestandardowej logiki dostarczonej przez dewelopera w .

Definicja funkcji (tylko 2 generacji)

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

export const yourFunctionName = onCustomEventPublished((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:
      # 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. Na przykład, jeśli polegasz na zdarzeniach niestandardowych z innego rozszerzenia, które tworzy kanał, poinstruuj użytkowników, aby najpierw zainstalowali to rozszerzenie.

W przykładzie powyżej możemy utworzyć regułę zdarzenia niestandardowego dla zdarzenia „default” Firebase kanał w regionie us-central1. Możesz podać nazwę kanału i region można dostosować 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}