Когда вы создаете расширение, вы пишете его логику с помощью облачных функций, почти так же, как вы пишете функцию, которая будет использоваться только в вашем собственном проекте. Вы объявляете свои функции в файле extension.yaml
, и когда пользователи устанавливают ваше расширение, эти функции развертываются в их проекте.
См. документацию по облачным функциям для получения общей информации об использовании облачных функций.
Облачные функции 1-го и 2-го поколения
Firebase поддерживает облачные функции как 1-го, так и 2-го поколения . Однако расширения Firebase в настоящее время имеют некоторые ограничения на то, какое поколение облачных функций можно использовать с определенными типами триггеров. По этой причине многие расширения включают в себя сочетание функций 1-го и 2-го поколения.
Поддержка генерации функций указана для каждого типа триггера ниже.
Особые соображения
Некоторые определения функций требуют указания информации, которая также указана в файле
extension.yaml
. Например, в Cloud Firestore есть методdocument()
, который определяет шаблон документа для просмотра, а его соответствующее объявление вextension.yaml
имеет полеresource
, которое указывает то же самое.В таких ситуациях используется конфигурация, указанная в файле
extension.yaml
, а конфигурация, указанная в определении функции, игнорируется.Обычной практикой является указание настроенного значения в определении функции в целях документации. Примеры на этой странице следуют этому шаблону.
В SDK Cloud Functions 1-го поколения есть метод
functions.config()
и команда CLIfunctions:config:set
, которую можно использовать для работы с параметризованными значениями в функциях 1-го поколения. Этот метод устарел в Cloud Functions и вообще не будет работать в расширении. Вместо этого используйте модульfunctions.params
(рекомендуется) илиprocess.env
.
Использование TypeScript
Большая часть документации по разработке собственного расширения описывает рабочие процессы с использованием JavaScript для облачных функций для 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-запросы» в документации по облачным функциям.
Определение функции (только 1-го поколения)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Объявление ресурса (расширение.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Вызываемые функции
Вызываемые функции аналогичны функциям, запускаемым HTTP, но они реализуют протокол, который делает их удобными для вызова из клиентского кода.
Информацию об использовании вызываемых функций см. в разделе Вызов функций из вашего приложения в документации по облачным функциям.
Определение функции (только 1-го поколения)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Объявление ресурса (расширение.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Триггеры запланированных функций
Запланированная функция выполняется неоднократно по настраиваемому расписанию.
См. функции планирования в документации по облачным функциям для получения информации о написании запланированных функций.
Определение функции (только 1-го поколения)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Объявление ресурса (расширение.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.
См. раздел «Обработка событий жизненного цикла вашего расширения» для получения информации о написании функций, обрабатывающих события жизненного цикла.
Информацию о написании функций очереди задач см. в разделе «Постановка функций в очередь с облачными задачами» в документации по облачным функциям.
Определение функции (только 1-го поколения)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Объявление ресурса (расширение.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, см. в разделе « Триггеры Google Analytics» в документации по облачным функциям.
Определение функции (только 1-го поколения)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Объявление ресурса (расширение.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
Аутентификация
Функция, активируемая аутентификацией, запускается при создании или удалении пользователя.
См. «Триггеры аутентификации Firebase» в документации по облачным функциям для получения информации о написании функций, запускаемых авторизацией.
Определение функции (только 1-го поколения)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Объявление ресурса (расширение.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/firebase.auth/eventTypes/user.create
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
В следующей таблице показано, как указать каждый из поддерживаемых типов событий аутентификации:
Триггер событий облачных функций | eventType | Описание |
---|---|---|
onCreate() | providers/firebase.auth/eventTypes/user.create | Новый пользователь создан |
onDelete() | providers/firebase.auth/eventTypes/user.delete | Пользователь удален |
Облачный пожарный магазин
Функция, активируемая Cloud Firestore, запускается при создании, обновлении или удалении документа.
См. «Триггеры Cloud Firestore» в документации по облачным функциям для получения информации о написании функций, запускаемых Firestore.
Определение функции (только 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.
// ...
});
Объявление ресурса (расширение.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:
Триггер событий облачных функций | 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, см. в разделе « Триггеры Pub/Sub» в документации по облачным функциям.
Определение функции (только 1-го поколения)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Объявление ресурса (расширение.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
База данных реального времени
Функция, активируемая базой данных реального времени, запускается, когда создается, обновляется или удаляется путь, соответствующий указанному шаблону.
Информацию о написании функций, запускаемых RTDB, см. в разделе « Триггеры базы данных реального времени» в документации по облачным функциям.
Определение функции (только 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.
// ...
});
Объявление ресурса (расширение.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:
Триггер событий облачных функций | 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 в документации Cloud Functions для получения информации о написании функций, запускаемых Remote Config.
Определение функции (только 1-го поколения)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Объявление ресурса (расширение.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.firebase.remoteconfig.update
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
Облачное хранилище
Функция, активируемая Cloud Storage, запускается при создании, архивировании или удалении объекта, а также при изменении его метаданных.
Информацию о написании функций, запускаемых хранилищем, см. в разделе « Триггеры облачного хранилища» в документации по облачным функциям.
Определение функции (только 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) => {
// ...
});
Объявление ресурса (расширение.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:
Триггер событий облачных функций | 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, см. в разделе « Триггеры Firebase Test Lab» в документации по облачным функциям.
Определение функции (только 1-го поколения)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Объявление ресурса (расширение.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» в документации по облачным функциям для получения информации о написании функций, запускаемых оповещениями.
Определение функции (только 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) => {
// ...
});
Объявление ресурса (расширение.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
Триггеры оповещений мониторинга производительности
Функция, активируемая мониторингом производительности, запускается, когда мониторинг производительности публикует предупреждение.
См. «Триггеры оповещений Firebase» в документации по облачным функциям для получения информации о написании функций, запускаемых оповещениями.
Определение функции (только 2-го поколения)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Объявление ресурса (расширение.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 публикует оповещение.
См. «Триггеры оповещений Firebase» в документации по облачным функциям для получения информации о написании функций, запускаемых оповещениями.
Определение функции (только 2-го поколения)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Объявление ресурса (расширение.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) => {
// ...
});
Объявление ресурса (расширение.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}