При создании расширения вы пишете его логику с помощью Cloud Functions , подобно тому, как вы пишете функцию, которая будет использоваться только в вашем проекте. Вы объявляете свои функции в файле extension.yaml
, и когда пользователи устанавливают ваше расширение, эти функции внедряются в их проекты.
Общую информацию об использовании Cloud Functions см. в документации по Cloud Functions .
Cloud Functions 1-го и 2-го поколения
Firebase поддерживает Cloud Functions как первого, так и второго поколения . Однако в настоящее время расширения Firebase имеют некоторые ограничения на то, какое поколение облачных функций можно использовать с определёнными типами триггеров. По этой причине многие расширения включают в себя сочетание функций первого и второго поколений.
Поддержка генерации функций указана для каждого типа триггера ниже.
Особые соображения
Некоторые определения функций требуют указания информации, которая также указана в файле
extension.yaml
. Например, в Cloud Firestore есть методdocument()
, который определяет шаблон документа для отслеживания, а его соответствующее объявление вextension.yaml
содержит полеresource
, которое также определяет этот шаблон.В этих ситуациях используется конфигурация, указанная в файле
extension.yaml
, а конфигурация, указанная в определении функции, игнорируется.Обычно принято указывать заданное значение в определении функции, независимо от этого, в целях документирования. Примеры на этой странице следуют этому шаблону.
В SDK Cloud Functions первого поколения есть метод
functions.config()
и CLI-командаfunctions:config:set
, которые можно использовать для работы с параметризованными значениями в функциях первого поколения. Этот метод устарел в Cloud Functions и не будет работать в расширении. Вместо этого используйте модульfunctions.params
(рекомендуется) илиprocess.env
.
Использование TypeScript
Большая часть документации по разработке собственного расширения описывает рабочие процессы с использованием JavaScript для Cloud Functions for Firebase . Однако вы можете писать свои функции на TypeScript.
Фактически, все официальные расширения Firebase написаны на TypeScript. Вы можете ознакомиться с этими расширениями, чтобы узнать о рекомендациях по использованию TypeScript для вашего расширения.
Если вы пишете функции своего расширения на TypeScript, перед установкой расширения необходимо сделать следующее:
Скомпилируйте исходный код функций вашего расширения в JavaScript.
Команда
firebase ext:dev:init
позволяет выбрать TypeScript для написания функций. Эта команда предоставляет вам полное устанавливаемое расширение, а также скрипт сборки, который можно запустить с помощьюnpm run build
.В файле
package.json
обязательно укажитеmain
поле на сгенерированный JavaScript.Если вы устанавливаете или загружаете расширение из локального источника, сначала скомпилируйте файлы TypeScript.
Поддерживаемые функции триггеров
HTTP-триггеры
Функция, запускаемая HTTP, развертывается на общедоступной конечной точке https
и запускается при доступе к конечной точке.
Информацию о написании функций, запускаемых HTTP, см. в разделе Вызов функций через HTTP-запросы в документации по Cloud Functions .
Определение функции (только 1-го поколения)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Декларация ресурса (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Вызываемые функции
Вызываемые функции похожи на функции, запускаемые HTTP, но они реализуют протокол, который делает их удобными для вызова из клиентского кода.
Информацию об использовании вызываемых функций см. в разделе Вызов функций из вашего приложения в документации по Cloud Functions .
Определение функции (только 1-го поколения)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Декларация ресурса (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Запланированные триггеры функций
Запланированная функция выполняется многократно на основе настраиваемого расписания.
Информацию о написании запланированных функций см. в разделе «Функции расписания» в документации по Cloud Functions .
Определение функции (только 1-го поколения)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Декларация ресурса (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
Вот доступные подполя для scheduleTrigger
:
Поле | Описание |
---|---|
schedule (необходимый) | Частота, с которой должна выполняться функция. Это поле может принимать строки, использующие любой синтаксис (обязательно заключение в одинарные кавычки ):
|
timeZone (необязательный) | Часовой пояс, в котором будет действовать расписание.
|
Если вы хотите, чтобы пользователи могли настраивать расписание при установке вашего расширения, добавьте новый параметр в файл extension.yaml
и укажите ссылку на этот параметр в объявлении 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
Триггеры очереди задач
Функция очереди задач запускается либо при возникновении событий жизненного цикла вашего расширения, либо при ручном добавлении в очередь задач вашего расширения с помощью метода TaskQueue.enqueue()
Admin SDK.
Информацию о написании функций, обрабатывающих события жизненного цикла, см. в разделе Обработка событий жизненного цикла вашего расширения .
Информацию о написании функций очереди задач см. в разделе Функции постановки в очередь с облачными задачами в документации по Cloud Functions .
Определение функции (только 1-го поколения)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Декларация ресурса (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
Задайте для свойства taskQueueTrigger
значение {}
или набор параметров, которые настраивают ограничения скорости и поведение повторных попыток очереди задач (см. Настройка очереди задач ).
Если вы хотите, чтобы ваша функция запускалась при событиях жизненного цикла вашего расширения, добавьте записи lifecycleEvents
с именем функции и необязательным сообщением об обработке, которое будет отображаться в консоли Firebase при начале обработки.
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, запускается при регистрации указанного события Analytics.
Информацию о написании функций, запускаемых Analytics, см. в разделе «Триггеры Google Analytics» в документации по Cloud Functions .
Определение функции (только 1-го поколения)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Декларация ресурса (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: ...
Если вы хотите, чтобы пользователи могли настроить прослушивание события Analytics при установке вашего расширения, добавьте новый параметр в файл extension.yaml
и укажите ссылку на этот параметр в объявлении 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
Функция аутентификации запускается при создании или удалении пользователя.
Информацию о написании функций, запускаемых аутентификацией, см. в разделе Триггеры аутентификации Firebase в документации по Cloud Functions .
Определение функции (только 1-го поколения)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Декларация ресурса (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: ...
В следующей таблице показано, как указать каждый из поддерживаемых типов событий Authentication :
Триггер события Cloud Functions | eventType | Описание |
---|---|---|
onCreate() | providers/firebase.auth/eventTypes/user.create | Создан новый пользователь |
onDelete() | providers/firebase.auth/eventTypes/user.delete | Пользователь удален |
Cloud Firestore
Функция, запускаемая Cloud Firestore, запускается при создании, обновлении или удалении документа.
Информацию о написании функций, запускаемых Firestore, см. в разделе «Триггеры Cloud Firestore» в документации по Cloud Functions .
Определение функции (только 1-го поколения)
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.
// ...
});
Декларация ресурса (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: ...
В следующей таблице показано, как указать каждый из поддерживаемых типов событий Cloud Firestore :
Триггер события Cloud Functions | eventType | Описание |
---|---|---|
onCreate() | providers/cloud.firestore/eventTypes/document.create | Создан новый документ |
onDelete() | providers/cloud.firestore/eventTypes/document.delete | Документ удален |
onUpdate() | providers/cloud.firestore/eventTypes/document.update | Документ обновлен |
onWrite() | providers/cloud.firestore/eventTypes/document.write | Документ создан, удален или обновлен |
Если вы хотите, чтобы пользователи могли настраивать путь к документу при установке вашего расширения, добавьте новый параметр в файл extension.yaml
и укажите ссылку на этот параметр в объявлении 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
Функция Pub/Sub-triggered запускается, когда сообщение публикуется в определенной теме.
Информацию о написании функций, запускаемых Pub/Sub, см. в разделе «Триггеры Pub/Sub» документации Cloud Functions .
Определение функции (только 1-го поколения)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Декларация ресурса (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: ...
Если вы хотите, чтобы пользователи могли настраивать тему Pub/Sub при установке вашего расширения, добавьте новый параметр в файл extension.yaml
и укажите ссылку на этот параметр в объявлении 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
Функция, запускаемая базой данных в реальном времени, запускается при создании, обновлении или удалении пути, соответствующего указанному шаблону.
Информацию о написании функций, запускаемых RTDB, см. в разделе «Триггеры базы данных в реальном времени» документации по Cloud Functions .
Определение функции (только 1-го поколения)
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.
// ...
});
Декларация ресурса (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: ...
В следующей таблице показано, как указать каждый из поддерживаемых типов событий Cloud Firestore :
Триггер события Cloud Functions | eventType | Описание |
---|---|---|
onCreate() | providers/google.firebase.database/eventTypes/ref.create | Данные созданы |
onDelete() | providers/google.firebase.database/eventTypes/ref.delete | Данные удалены |
onUpdate() | providers/google.firebase.database/eventTypes/ref.update | Данные обновлены |
onWrite() | providers/google.firebase.database/eventTypes/ref.write | Данные созданы, удалены или обновлены |
Если вы хотите, чтобы пользователи могли настраивать путь для просмотра при установке вашего расширения, добавьте новый параметр в файл extension.yaml
и укажите ссылку на этот параметр в объявлении 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
Функция, запускаемая Remote Config, запускается при обновлении шаблона параметров проекта.
Информацию о написании функций, запускаемых с помощью Remote Config, см. в разделе «Триггеры Remote Config» документации Cloud Functions .
Определение функции (только 1-го поколения)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Декларация ресурса (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 Functions .
Определение функции (только 1-го поколения)
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) => {
// ...
});
Декларация ресурса (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: ...
В следующей таблице показано, как указать каждый из поддерживаемых типов событий Cloud Storage :
Триггер события Cloud Functions | eventType | Описание |
---|---|---|
onFinalize() | google.storage.object.finalize | Объект создан |
onMetadataUpdate() | google.storage.object.metadataUpdate | Метаданные объекта обновлены |
onArchive() | google.storage.object.archive | Объект был заархивирован |
onDelete() | google.storage.object.delete | Объект удален |
Если вы хотите, чтобы пользователи могли настраивать контейнер хранилища при установке вашего расширения, добавьте новый параметр в файл extension.yaml
и укажите ссылку на этот параметр в объявлении 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
Функция, запускаемая Test Lab, запускается после завершения тестирования тестовой матрицы.
Информацию о написании функций, запускаемых Test Lab, см. в разделе «Триггеры Firebase Test Lab» документации Cloud Functions .
Определение функции (только 1-го поколения)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Декларация ресурса (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
Функция, запускаемая Crashlytics запускается, когда Crashlytics публикует оповещение.
Информацию о написании функций, запускаемых оповещениями, см. в разделе «Триггеры оповещений Firebase» в документации по Cloud Functions .
Определение функции (только 2-е поколение)
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) => {
// ...
});
Декларация ресурса (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
можно использовать следующие значения:
-
crashlytics.newFatalIssue
-
crashlytics.newNonfatalIssue
-
crashlytics.regression
-
crashlytics.stabilityDigest
-
crashlytics.velocity
-
crashlytics.newAnrIssue
Триггеры оповещений Performance Monitoring
Функция, запускаемая Performance Monitoring запускается, когда Performance Monitoring публикует оповещение.
Информацию о написании функций, запускаемых оповещениями, см. в разделе «Триггеры оповещений Firebase» в документации по Cloud Functions .
Определение функции (только 2-е поколение)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Декларация ресурса (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
Функция, запускаемая App Distribution запускается, когда App Distribution публикует оповещение.
Информацию о написании функций, запускаемых оповещениями, см. в разделе «Триггеры оповещений Firebase» в документации по Cloud Functions .
Определение функции (только 2-е поколение)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Декларация ресурса (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
можно использовать следующие значения:
-
appDistribution.newTesterIosDevice
-
appDistribution.inAppFeedback
Пользовательские триггеры событий (Eventarc)
Функция, запускаемая Eventarc, запускается, когда определенный тип события публикуется на определенном канале.
Информацию о написании функций, запускаемых Eventarc, см. в разделе Создание и обработка пользовательских триггеров событий в документации по Cloud Functions .
Вы также можете публиковать события из своих расширений, чтобы предоставить пользователям возможность добавлять собственную логику в ваше расширение. См. раздел Использование пользовательской логики, предоставленной разработчиком, в расширении .
Определение функции (только 2-е поколение)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Декларация ресурса (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: ...
Канал должен уже существовать на момент установки расширения. Например, если вы зависите от пользовательских событий другого расширения, создающего канал, сообщите пользователям о необходимости сначала установить это расширение.
В примере выше будет создан настраиваемый триггер события для канала Firebase «по умолчанию» в регионе us-central1
. Вы можете настроить название канала и регион с помощью параметров. Например:
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}