Параметры — это механизм, с помощью которого пользователь настраивает каждый установленный экземпляр расширения. Параметры подобны переменным среды для расширения. Значения параметров могут быть либо автоматически заполнены (предоставлены Firebase после установки), либо настроены пользователем (указаны пользователем во время установки).
Эти параметры доступны для ссылки в исходном коде функций вашего расширения, вашем файле extension.yaml
и вашем файле POSTINSTALL.md
. Вот синтаксис для ссылки на параметр с именем PARAMETER_NAME
:
В исходном коде функций используйте модуль
params
(например,params.defineInt(" PARAMETER_NAME ")
) илиprocess.env. PARAMETER_NAME
.В
extension.yaml
иPOSTINSTALL.md
используйте${param: PARAMETER_NAME }
.После установки консоль Firebase отображает содержимое файла
POSTINSTALL.md
и заполняет все ссылки на параметры фактическими значениями для установленного экземпляра.
Автоматически заполняемые параметры
Каждый установленный экземпляр расширения автоматически имеет доступ к нескольким автоматически заполняемым параметрам по умолчанию, предоставляемым Firebase (см. таблицу ниже). Эти значения параметров являются либо значениями по умолчанию для проекта Firebase (например, контейнер Storage по умолчанию ), либо они являются специфичными для расширения (например, идентификатор экземпляра расширения).
Все автоматически заполняемые значения параметров неизменяемы. Они устанавливаются во время создания проекта или установки расширения.
Несмотря на то, что Firebase автоматически заполняет эти значения параметров для расширения, Firebase не автоматически предоставляет связанные продукты пользователю во время установки . Пользователь, устанавливающий расширение, должен включить связанные и применимые продукты в своем проекте перед установкой. Например, если ваше расширение включает Cloud Firestore , пользователь должен настроить Cloud Firestore в своем проекте. Мы рекомендуем уведомить ваших пользователей об этих требованиях в файле PREINSTALL.md
.
Ссылка на автоматически заполняемый параметр | Описание | Значение параметра (предоставлено Firebase) |
---|---|---|
Параметры со значениями по умолчанию из проекта Firebase | ||
PROJECT_ID | Уникальный идентификатор проекта Firebase, в котором установлено расширение | Обобщенный формат: Пример значения: |
DATABASE_URL | URL-адрес экземпляра Realtime Database по умолчанию для проекта Firebase | Обобщенный формат: Пример значения: |
DATABASE_INSTANCE | Имя экземпляра Realtime Database по умолчанию для проекта Firebase Обычно это значение совпадает с идентификатором проекта или заканчивается на | Обобщенный формат: Пример значения: |
STORAGE_BUCKET | Имя контейнера Cloud Storage по умолчанию для проекта Firebase | Обобщенный формат: Пример значения: |
Параметр со значением по умолчанию из установки расширения | ||
EXT_INSTANCE_ID | Уникальный идентификатор установленного экземпляра расширения Это значение генерируется из поля | Обобщенный формат для 1-го установленного экземпляра (автоматически назначается Firebase; не может быть изменен пользователем во время установки): Пример значения: Обобщенный формат для 2-го установленного экземпляра и выше (автоматически назначается Firebase; может быть изменен пользователем во время установки): Пример значения: |
Параметры, настраиваемые пользователем
Чтобы позволить пользователю настраивать каждый установленный экземпляр расширения, вы можете попросить пользователя указать значения параметров во время установки. Чтобы запросить эти значения, вы настраиваете подсказки в разделе params
вашего файла extension.yaml
.
Ниже приведен пример раздела params
, за которым следует таблица, описывающая все доступные поля параметров.
# extension.yaml
...
# Parameters (environment variables) for which the user specifies values during installation
params:
- param: DB_PATH
label: Realtime Database path
description: >-
What is the Realtime Database path where you will write new text
for sentiment analysis?
type: string
validationRegex: ^\S+$
validationErrorMessage: Realtime Database path cannot contain spaces.
example: path/to/posts
required: true
- param: TEXT_KEY
label: Key for text
description: What is the name of the key that will contain text to be analyzed?
type: string
default: textToAnalyze
required: true
В разделе params
файла extension.yaml
используйте следующие поля для определения настраиваемого пользователем параметра:
Поле | Тип | Описание | ||||
---|---|---|---|---|---|---|
param (необходимый) | нить | Имя параметра | ||||
label (необходимый) | нить | Краткое описание параметра Отображается пользователю, когда ему предлагается ввести значение параметра. | ||||
description (необязательный) | нить | Подробное описание параметра Отображается пользователю, когда ему предлагается ввести значение параметра. Поддерживает уценку | ||||
type (необязательный) | нить | Механизм ввода, позволяющий пользователю задать значение параметра (например, ввести текст напрямую или выбрать из раскрывающегося списка) Допустимые значения включают следующее:
Если это поле пропущено, параметр по умолчанию имеет | ||||
options (обязательно, если type параметра — select или multiSelect ) | список | Список значений, из которых пользователь может выбирать Включите поля
Поле | ||||
resourceType (обязательно, если type параметра — selectResource ) | нить | Тип ресурса Firebase, который предлагается пользователю выбрать. В настоящее время только контейнеры Cloud Storage поддерживают селекторы ресурсов:
Неизвестные значения | ||||
example (необязательный) | нить | Пример значения параметра | ||||
validationRegex (необязательный) (применимо только в том случае, если type параметра — string ) | нить | Строка регулярного выражения для проверки значения параметра, настроенного пользователем Regex скомпилирован с использованием библиотеки go: RE2 Подробную информацию о проверке см. в разделе Проверка и сообщения об ошибках ниже. | ||||
validationErrorMessage (необязательный) | нить | Сообщение об ошибке, которое будет отображаться в случае сбоя Подробную информацию о сообщениях об ошибках см. в разделе Проверка и сообщения об ошибках ниже. | ||||
default (необязательный) | нить | Значение по умолчанию для параметра, если пользователь оставляет значение параметра пустым Если применимо, вы можете указать автоматически заполняемое значение параметра для значения | ||||
required (необязательный) | булев | Определяет, может ли пользователь отправить пустую строку при запросе значения параметра. Если | ||||
immutable (необязательный) | булев | Определяет, может ли пользователь изменить значение параметра после установки (например, если он перенастроит расширение) Если Примечание: Если вы определяете параметр «location» для развернутых функций вашего расширения , то вам следует включить это |
Проверка и сообщения об ошибках для значений, настроенных пользователем
При настройке параметра с type
string
необходимо определить соответствующую проверку регулярного выражения с помощью поля validationRegex
параметра.
Также для многих расширений часто запрашиваемым значением параметра является путь к базе данных или контейнер Cloud Storage . Имейте в виду, что во время установки, перенастройки или обновления служба Extensions не проверяет следующее во время ввода значения параметра:
- Настроена ли указанная база данных или контейнер Cloud Storage в проекте Firebase пользователя
- Существует ли указанный путь к базе данных в базе данных пользователя
Однако когда расширение фактически развертывает свои ресурсы, консоль Firebase или Firebase CLI отобразят сообщение об ошибке, если указанная база данных или контейнер Cloud Storage еще не настроены в проекте.
Мы настоятельно рекомендуем вам уведомить пользователей в файле PREINSTALL
об этих требованиях, чтобы при установке вашего расширения оно успешно установилось и работало так, как и ожидалось.
Параметры системы
Системные параметры управляют базовой конфигурацией ресурсов расширения. Поскольку они предназначены для управления конфигурацией ресурсов, они не доступны как переменные среды из вашего кода функции.
Обычно вам не нужно ничего объявлять для этих параметров в extension.yaml
. Они автоматически определяются для каждого экземпляра расширения, и пользователи имеют возможность задать собственные значения при установке вашего расширения.
Однако, если у вашего расширения есть особые требования к ресурсам, вы можете задать определенные значения на уровне каждого ресурса в extension.yaml
. Эти параметры конфигурации для каждого ресурса переопределят параметры экземпляра расширения пользователя. Например:
resources:
- name: high_memory_function
type: firebaseextensions.v1beta.function
description: >-
This function needs at least 1GB of memory!
properties:
httpsTrigger: {}
runtime: nodejs18
availableMemoryMb: 1024
- name: normal_function
type: firebaseextensions.v1beta.function
description: >-
This function has no special memory requirements. It will use the
default value, or the value of `firebaseextension.v1beta.function/memory`
properties:
httpsTrigger: {}
runtime: nodejs18
Доступные параметры системы:
Имя | Метка (удобная для человека) | Соответствующее поле в properties | Описание |
---|---|---|---|
firebaseextensions.v1beta.function/location | Расположение | location | В каком регионе следует развернуть Cloud Functions? |
firebaseextensions.v1beta.function/память | Функциональная память | memory | Сколько мегабайт памяти следует выделить каждой функции? |
firebaseextensions.v1beta.function/timeoutСекунды | Тайм-аут функции | timeout | Сколько секунд должны выполняться функции до истечения времени ожидания? |
firebaseextensions.v1beta.function/vpcConnectorEgressSettings | Выходной разъем VPC | vpcConnectorEgressSettings | Управляет исходящим трафиком при настройке VPC-коннектора |
firebaseextensions.v1beta.function/vpcConnector | VPC-коннектор | vpcConnector | Подключает облачные функции к указанному соединителю VPC. |
firebaseextensions.v1beta.function/minInstances | Минимальное количество экземпляров функции | minInstances | Минимальное количество экземпляров этой функции для одновременного запуска |
firebaseextensions.v1beta.function/maxInstances | Максимальное количество экземпляров функции | maxInstances | Максимальное количество экземпляров этой функции, которые можно запустить одновременно |
firebaseextensions.v1beta.function/ingressSettings | Настройки входящего трафика | ingressSettings | Контролирует, откуда принимается входящий трафик |
firebaseextensions.v1beta.function/labels | Этикетки | labels | Метки, применяемые ко всем ресурсам в расширении |