При создании расширения вы пишете его логику с помощью Cloud Functions , примерно так же, как вы бы написали функцию, которая будет использоваться только в вашем собственном проекте. Вы объявляете свои функции в файле extension.yaml , и когда пользователи устанавливают ваше расширение, эти функции развертываются в их проекте.
Общую информацию об использовании Cloud Functions Cloud Functions Functions.
Cloud Functions 1-го и 2-го поколений
Firebase поддерживает как Cloud Functions первого, так и второго поколения . Однако в расширениях Firebase в настоящее время существуют некоторые ограничения на то, какое поколение функций можно использовать с определенными типами триггеров. По этой причине многие расширения включают в себя сочетание функций первого и второго поколений.
Поддержка генерации функций указана для каждого типа триггеров ниже.
Особые соображения
Для некоторых определений функций требуется указать информацию, которая также указана в файле
extension.yaml. Например, в Cloud Firestore есть методdocument(), который задает шаблон документа для отслеживания, и соответствующее объявление вextension.yamlсодержит полеresource, которое задает то же самое.В таких ситуациях используется конфигурация, указанная в файле
extension.yaml, а конфигурация, указанная в определении функции, игнорируется.В целях документирования обычно принято указывать заданное значение в определении функции, независимо от контекста. Примеры на этой странице следуют этому принципу.
В SDK Cloud Functions первого поколения есть метод
functions.config()и команда CLIfunctions: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.
Информацию о написании функций, запускаемых Google Analytics, см. в документации Cloud Functions по триггерам Google Analytics .
Определение функции (только для 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, см. в документации 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 , см. в документации 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
Функция, запускаемая тестовой лабораторией, выполняется после завершения тестирования тестовой матрицы.
Информацию о написании функций, запускаемых тестовой лабораторией, см. в разделе «Триггеры 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 Alerts» в документации 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)
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 Alerts» в документации Cloud Functions .
Определение функции (только для 2-го поколения)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Объявление ресурса (extension.yaml)
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 Alerts» в документации Cloud Functions .
Определение функции (только для 2-го поколения)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Объявление ресурса (extension.yaml)
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)
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}