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
, a gdy użytkownicy zainstalują rozszerzenie, zostaną one 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ą 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.
Poniżej znajdziesz informacje o obsłudze generowania funkcji w przypadku poszczególnych typów wyzwalaczy.
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 wextension.yaml
ma poleresource
, 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 CLIfunctions: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 nie będzie działać w rozszerzeniu. Zamiast tego użyj modułufunctions.params
(zalecane) lubprocess.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 języku 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:init
Polecenie 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.json
upewnij się, że polemain
wskazuje 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 ich wywoływanie z kodu po stronie klienta.
Informacje o korzystaniu z funkcji wywoływalnych 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ą funkcja ma być uruchamiana. 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 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 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 zostanie utworzony lub usunięty.
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:
Cloud Functions aktywator zdarzeń | 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ń:
Cloud Functions aktywator zdarzeń | 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ń:
Cloud Functions aktywator zdarzeń | eventType |
Opis |
---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Utworzone dane |
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ń:
Cloud Functions aktywator zdarzeń | 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)
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 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)
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ł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)
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 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.
Więcej informacji 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)
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 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}