Параметры — это механизм, с помощью которого пользователь настраивает каждый установленный экземпляр расширения. Параметры подобны переменным среды для расширения. Значения параметров могут либо заполняться автоматически (предоставляться 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 (например, стандартный сегмент хранилища), либо специфичными для расширения (например, идентификатор экземпляра расширения).
Все автоматически заполняемые значения параметров являются неизменяемыми. Они устанавливаются во время создания проекта или установки расширения.
Несмотря на то, что 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 | Уникальный идентификатор установленного экземпляра расширения. Это значение генерируется из поля | Обобщенный формат для первого установленного экземпляра (назначается автоматически Firebase; пользователь не может изменить его во время установки): Пример значения: Обобщенный формат для второго и последующих установленных экземпляров (назначается 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(необязательный) | нить | Подробное описание параметра Отображается пользователю при запросе значения параметра. Поддерживает разметку Markdown. | ||||
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 | Функциональная память | memory | Сколько мегабайт памяти следует выделить каждой функции? |
| firebaseextensions.v1beta.function/timeoutSeconds | Превышено время ожидания функции | 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 | Метки, применяемые ко всем ресурсам в расширении. |