Bir uzantı oluşturduğunuzda, mantığını Cloud Functions kullanarak yazarsınız. Bu, yalnızca kendi projenizde kullanılacak bir işlevi yazarken kullanacağınız yöntemle aynıdır. İşlevlerinizi extension.yaml
dosyasında tanımlarsınız ve kullanıcılar uzantınızı yüklediğinde bu işlevler projelerinde dağıtılır.
Cloud Functions kullanmayla ilgili genel bilgiler için Cloud Functions belgelerine bakın.
1. ve 2. nesil Cloud Functions
Firebase hem 1. nesil hem de 2. nesil Cloud Functions'i destekler. Ancak Firebase uzantılarında, belirli tetikleyici türleriyle kullanabileceğiniz bulut işlevi nesli konusunda şu anda bazı kısıtlamalar vardır. Bu nedenle, birçok uzantı 1. ve 2. nesil işlevlerin bir karışımını içerir.
İşlev oluşturma desteği, aşağıdaki her tetikleyici türü için belirtilmiştir.
Dikkat edilmesi gereken noktalar
Bazı işlev tanımları,
extension.yaml
dosyasında da belirtilen bilgileri belirtmenizi gerektirir. Örneğin, Cloud Firestore'da izlenecek belge kalıbını belirten birdocument()
yöntemi vardır veextension.yaml
'daki ilgili beyanında da aynı şeyi belirten birresource
alanı vardır.Bu durumlarda,
extension.yaml
dosyasında belirtilen yapılandırma kullanılır ve işlev tanımında belirtilen yapılandırma yoksayılır.Belgelendirme amacıyla, yapılandırılmış değeri işlev tanımında belirtmek yaygın bir uygulamadır. Bu sayfadaki örnekler bu kalıbı izler.
Cloud Functions 1. nesil SDK'da, 1. nesil işlevlerdeki parametreli değerlerle çalışmak için kullanabileceğiniz bir
functions.config()
yöntemi vefunctions:config:set
CLI komutu vardır. Bu teknik Cloud Functions sürümünde kullanımdan kaldırıldı ve uzantılarda hiç çalışmaz. Bunun yerinefunctions.params
modülünü (önerilen) veyaprocess.env
'ü kullanın.
TypeScript'i kullanma
Kendi uzantılarınızı geliştirmeyle ilgili dokümanların çoğunda, Cloud Functions for Firebase için JavaScript kullanan iş akışları açıklanmaktadır. Bunun yerine, işlevlerinizi TypeScript kullanarak da yazabilirsiniz.
Aslında, tüm resmi Firebase uzantıları TypeScript ile yazılmıştır. Uzantılarınızda TypeScript'i kullanmayla ilgili en iyi uygulamalar için bu uzantıları inceleyebilirsiniz.
Uzantı işlevlerinizi TypeScript ile yazıyorsanız uzantınızı yüklemeden önce aşağıdakileri yapmanız gerekir:
Uzantınızın işlev kaynak kodunu JavaScript'e derleyin.
firebase ext:dev:init
komutu, işlevlerinizi yazmak için TypeScript'i seçmenize olanak tanır. Bu komut, size eksiksiz ve yüklenilebilir bir uzantı venpm run build
ile çalıştırabileceğiniz bir derleme komut dosyası sağlar.package.json
dosyanızdamain
alanını oluşturulan JavaScript'e yönlendirdiğinizden emin olun.Uzantılarınızı yerel kaynaktan yüklüyor veya yüklüyorsanız önce TypeScript dosyalarınızı derleyin.
Desteklenen işlev tetikleyicileri
HTTP tetikleyicileri
HTTP ile tetiklenen bir işlev, herkese açık bir https
uç noktasına dağıtılır ve uç noktaya erişildiğinde çalışır.
HTTP tetiklemeli işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında HTTP istekleri aracılığıyla işlevleri çağırma bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Kaynak beyanı (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Çağırılabilir işlevler
Çağırılabilir işlevler, HTTP tarafından tetiklenen işlevlere benzer ancak istemci tarafı kodunuzdan çağrılmalarını kolaylaştıran bir protokol uygular.
Çağırılabilir işlevleri kullanma hakkında bilgi edinmek için Cloud Functions dokümanlarında Uygulamanızdan işlev çağırma bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Kaynak beyanı (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Planlanmış işlev tetikleyicileri
Planlanmış işlevler, özelleştirilebilir bir programa göre tekrar tekrar çalışır.
Planlanmış işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında İşlevleri planlama bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Kaynak beyanı (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
scheduleTrigger
için kullanılabilen alt alanlar aşağıda verilmiştir:
Alan | Açıklama |
---|---|
schedule (zorunlu) |
İşlevin çalıştırılmasını istediğiniz sıklık. Bu alan, aşağıdaki söz dizimlerini kullanan dizeleri kabul edebilir (tek tırnak içine alınması gerekir):
|
timeZone (isteğe bağlı) |
Programın çalışacağı saat dilimi.
|
Kullanıcıların uzantınızı yüklerken programı yapılandırabilmesini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve parametreye işlevinizin resource
tanımından referans verin:
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
Görev sırası tetikleyicileri
Görev kuyruğu işlevi, uzantınızın yaşam döngüsü etkinliklerinde veya Yönetici SDK'sının TaskQueue.enqueue()
yöntemi kullanılarak uzantınızın görev kuyruğuna manuel olarak eklendiğinde tetiklenir.
Yaşam döngüsü etkinliklerini işleyen işlevler yazma hakkında bilgi edinmek için Uzantılarınızın yaşam döngüsü etkinliklerini işleme başlıklı makaleyi inceleyin.
Görev kuyruğu işlevleri yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Cloud Tasks ile işlevleri sıraya ekleme bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Kaynak beyanı (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
taskQueueTrigger
mülk kümesini {}
olarak veya görev kuyruğunun hız sınırlarını ve yeniden deneme davranışını ayarlayan seçeneklerin haritası olarak ayarlayın (Görev kuyruğunu ayarlama bölümüne bakın).
İşlevinizi uzantınızın yaşam döngüsü etkinliklerinde tetiklemek istiyorsanız işlevin adını ve isteğe bağlı bir işleme mesajını içeren lifecycleEvents
kayıtları ekleyin. Bu işleme mesajı, işleme başladığında Firebase konsolunda gösterilir.
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
Analytics tarafından tetiklenen bir işlev, belirtilen bir Analytics etkinliği günlüğe kaydedildiğinde çalışır.
Analytics tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında Google Analytics tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Kaynak beyanı (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: ...
Kullanıcıların, uzantınızı yüklediklerinde dinlenecek Analytics etkinliğini yapılandırabilmesini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
tanımında parametreye referans verin:
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
Kimlik doğrulama tetikleyici işlev, bir kullanıcı oluşturulduğunda veya silindiğinde çalışır.
Kimlik doğrulamasıyla tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Firebase Authentication tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Kaynak beyanı (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: ...
Aşağıdaki tabloda, desteklenen Authentication etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:
Cloud Functions etkinlik tetikleyici | eventType |
Açıklama |
---|---|---|
onCreate() |
providers/firebase.auth/eventTypes/user.create |
Yeni kullanıcı oluşturuldu |
onDelete() |
providers/firebase.auth/eventTypes/user.delete |
Kullanıcı silindi |
Cloud Firestore
Cloud Firestore tarafından tetiklenen bir işlev, bir doküman oluşturulduğunda, güncellendiğinde veya silindiğinde çalışır.
Firestore tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Cloud Firestore tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
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.
// ...
});
Kaynak beyanı (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: ...
Aşağıdaki tabloda, desteklenen Cloud Firestore etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:
Cloud Functions etkinlik tetikleyici | eventType |
Açıklama |
---|---|---|
onCreate() |
providers/cloud.firestore/eventTypes/document.create |
Yeni doküman oluşturuldu |
onDelete() |
providers/cloud.firestore/eventTypes/document.delete |
Doküman silindi |
onUpdate() |
providers/cloud.firestore/eventTypes/document.update |
Belge güncellendi |
onWrite() |
providers/cloud.firestore/eventTypes/document.write |
Belge oluşturulduğunda, silindiğinde veya güncellendiğinde |
Kullanıcıların uzantınızı yüklerken doküman yolunu yapılandırabilmesini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
tanımında bu parametreye referans verin:
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
Pub/Sub tarafından tetiklenen işlev, belirli bir konuya mesaj yayınlandığında çalışır.
Pub/Sub tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında Pub/Sub tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Kaynak beyanı (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: ...
Kullanıcıların uzantınızı yüklerken Pub/Sub konusunu yapılandırabilmesini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
tanımında parametreye referans verin:
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
Realtime Database tarafından tetiklenen bir işlev, belirtilen bir kalıpla eşleşen bir yol oluşturulduğunda, güncellendiğinde veya silindiğinde çalışır.
RTDB tetiklenmiş işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Realtime Database tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
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.
// ...
});
Kaynak beyanı (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: ...
Aşağıdaki tabloda, desteklenen Cloud Firestore etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:
Cloud Functions etkinlik tetikleyici | eventType |
Açıklama |
---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Oluşturulan veriler |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
Veriler silindi |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
Veriler güncellendi |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
Oluşturulan, silinen veya güncellenen veriler |
Kullanıcıların uzantınızı yüklerken izlenecek yolu yapılandırabilmesini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
beyanında parametreye referans verin:
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
Remote Config tarafından tetiklenen bir işlev, bir projenin parametre şablonu güncellendiğinde çalışır.
Remote Config tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında Remote Config tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Kaynak beyanı (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
Cloud Storage tarafından tetiklenen işlevler, bir nesne oluşturulduğunda, arşivlendiğinde veya silindiğinde ya da meta verileri değiştiğinde çalışır.
Storage tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Cloud Storage tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
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) => {
// ...
});
Kaynak beyanı (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: ...
Aşağıdaki tabloda, desteklenen Cloud Storage etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:
Cloud Functions etkinlik tetikleyici | eventType |
Açıklama |
---|---|---|
onFinalize() |
google.storage.object.finalize |
Nesne oluşturuldu |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
Nesne meta verileri güncellendi |
onArchive() |
google.storage.object.archive |
Nesne arşivlendi |
onDelete() |
google.storage.object.delete |
Nesne silindi |
Kullanıcıların uzantınızı yüklerken depolama paketini yapılandırabilmesini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
tanımında bu parametreye referans verin:
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
Test Lab tarafından tetiklenen bir işlev, bir test matrisi testlerini tamamladığında çalışır.
Test Lab tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında Firebase Test Lab tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Kaynak beyanı (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 uyarı tetikleyicileri
Crashlytics tarafından tetiklenen bir işlev, Crashlytics uyarı yayınladığında çalışır.
Uyarı tetikleyici işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Firebase Uyarı tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 2. nesil)
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) => {
// ...
});
Kaynak beyanı (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: ...
alerttype
için aşağıdaki değerleri kullanabilirsiniz
crashlytics.newFatalIssue
crashlytics.newNonfatalIssue
crashlytics.regression
crashlytics.stabilityDigest
crashlytics.velocity
crashlytics.newAnrIssue
Performance Monitoring uyarı tetikleyicileri
Performance Monitoring tarafından tetiklenen bir işlev, Performance Monitoring bir uyarı yayınladığında çalışır.
Uyarı tetikleyici işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Firebase Uyarı tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 2. nesil)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Kaynak beyanı (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 uyarı tetikleyicileri
App Distribution tarafından tetiklenen bir işlev, App Distribution bir uyarı yayınladığında çalışır.
Uyarı tetikleyici işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Firebase Uyarı tetikleyicileri bölümüne bakın.
İşlev tanımı (yalnızca 2. nesil)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Kaynak beyanı (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: ...
alerttype
için aşağıdaki değerleri kullanabilirsiniz
appDistribution.newTesterIosDevice
appDistribution.inAppFeedback
Özel etkinlik tetikleyicileri (Eventarc)
Eventarc tarafından tetiklenen bir işlev, belirli bir etkinlik türü belirli bir kanalda yayınlandığında çalışır.
Eventarc tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functionsdokümanlarında Özel etkinlik tetikleyicileri oluşturma ve işleme bölümüne bakın.
Ayrıca, kullanıcılara uzantınıza özel mantık ekleme olanağı sunmak için uzantılarınızdaki etkinlikleri yayınlayabilirsiniz. Geliştirici tarafından sağlanan özel mantığı uzantılarda kullanma başlıklı makaleyi inceleyin.
İşlev tanımı (yalnızca 2. nesil)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Kaynak beyanı (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: ...
Uzantınız yüklendiğinde kanal zaten mevcut olmalıdır. Örneğin, kanalı oluşturan başka bir uzantının özel etkinliklerini kullanıyorsanız kullanıcılarınıza önce bu uzantıyı yüklemelerini söyleyin.
Yukarıdaki örnekte, us-central1
bölgesindeki "varsayılan" Firebase kanalı için özel bir etkinlik tetikleyicisi oluşturulur. Parametreleri kullanarak kanal adını ve bölgeyi özelleştirilebilir hale getirebilirsiniz. Örneğin:
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}