Настройте и используйте параметры в своем расширении

Параметры — это механизм, с помощью которого пользователь настраивает каждый установленный экземпляр расширения. Параметры подобны переменным среды для расширения. Значения параметров могут либо заполняться автоматически (предоставляться 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, в который установлено расширение.

Обобщенный формат:
project-id

Пример значения:
project-123

DATABASE_URL URL-адрес экземпляра Realtime Database по умолчанию в проекте Firebase

Обобщенный формат:
https:// project-id -default-rtdb.firebaseio.com
(В США)
или
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(за пределами США)

Пример значения:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

Имя экземпляра Realtime Database по умолчанию в проекте Firebase

Обычно это значение совпадает с идентификатором проекта или заканчивается на -default-rtdb .

Обобщенный формат:
project-id

Пример значения:
project-123

STORAGE_BUCKET Имя корзины Cloud Storage по умолчанию в проекте Firebase

Обобщенный формат:
PROJECT_ID .firebasestorage.app

Пример значения:
project-123.firebasestorage.app

Параметр со значением по умолчанию из установки расширения.
EXT_INSTANCE_ID

Уникальный идентификатор установленного экземпляра расширения.

Это значение генерируется из поля name указанного в файле extension.yaml .

Обобщенный формат для первого установленного экземпляра (назначается автоматически Firebase; пользователь не может изменить его во время установки):
name-from-extension.yaml

Пример значения:
my-awesome-extension


Обобщенный формат для второго и последующих установленных экземпляров (назначается Firebase автоматически; может быть изменен пользователем во время установки):
name-from-extension.yaml - 4-digit-alphanumeric-hash

Пример значения:
my-awesome-extension-6m31

Параметры, настраиваемые пользователем

Чтобы пользователь мог настраивать каждый установленный экземпляр расширения, вы можете попросить его указать значения параметров во время установки. Для запроса этих значений необходимо настроить параметры в разделе 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
(необязательный)
нить

Механизм ввода, определяющий способ установки пользователем значения параметра (например, прямой ввод текста или выбор из выпадающего списка).

Допустимые значения включают следующие:

  • string : позволяет вводить текст в произвольном формате (с ограничениями, заданными вашим validationRegex ).
  • select : позволяет выбрать один пункт из предопределенного списка вариантов. Если вы укажете это значение, вам также необходимо определить поле options .
  • multiSelect : позволяет выбрать один или несколько пунктов из предопределенного списка вариантов. Если вы укажете это значение, вам также необходимо определить поле options .
  • selectResource : позволяет выбрать определенный тип ресурса Firebase (например, хранилище Cloud Storage ) из проекта пользователя.

    При указании параметра этого типа пользователи получат более удобный виджет выбора в пользовательском интерфейсе установки; поэтому по возможности используйте параметры selectResource .

    Если вы укажете это значение, вам также необходимо определить поле resourceType .

  • secret : позволяет хранить конфиденциальные строки, такие как ключи API для сторонних сервисов. Эти значения будут храниться в Cloud Secret Manager .

    Cloud Secret Manager — это платная услуга, использование которой может повлечь за собой оплату для пользователей, устанавливающих ваше расширение. Если вы используете параметр типа secret , обязательно укажите в файле PREINSTALL , что ваше расширение использует Cloud Secret Manager.

Если это поле опущено, параметр по умолчанию имеет type string .

options
(Обязательно, если type параметра — select или multiSelect )
список

Список значений, из которых пользователь может выбрать

Включите поля label и value в поле options :

  • label (строка) : краткое описание выбираемого параметра
  • value (строка) : фактическое значение выбираемого параметра

Поле value обязательно для поля options .
Если label опущена, в качестве параметра списка по умолчанию используется отображаемое value .

resourceType
(обязательно, если type параметра — selectResource )
нить

Тип ресурса Firebase, который будет предложено выбрать пользователю. В настоящее время селекторы ресурсов поддерживаются только для сегментов Cloud Storage :

Тип ресурса Тип ID
Корзина Cloud Storage storage.googleapis.com/Bucket

Значения resourceType не известные по умолчанию, будут проигнорированы, и пользовательский интерфейс отобразит параметр в виде поля ввода произвольной string .

example
(необязательный)
нить

Пример значения параметра

validationRegex
(необязательный)
(Применимо только в том случае, если type параметра — string )
нить

Строка регулярного выражения для проверки заданного пользователем значения параметра.

Regex компилируется с использованием библиотеки go: RE2

Подробную информацию о проверке данных см. в разделе «Проверка и сообщения об ошибках» ниже.

validationErrorMessage
(необязательный)
нить

Сообщение об ошибке, которое будет отображаться в случае сбоя validationRegex

Подробную информацию об ошибках см. в разделе «Проверка и сообщения об ошибках» ниже.

default
(необязательный)
нить

Значение по умолчанию для параметра, если пользователь оставляет поле со значением параметра пустым.

При необходимости вы можете указать автоматически заполняемое значение параметра для значения default (например, см. параметр IMG_BUCKET расширения Resize Images ).

required
(необязательный)
логический

Определяет, может ли пользователь ввести пустую строку при запросе значения параметра.

Если required опущен, по умолчанию он имеет значение true (то есть является обязательным параметром).

immutable
(необязательный)
логический

Определяет, может ли пользователь изменить значение параметра после установки (например, при перенастройке расширения).

Если immutable опущен, по умолчанию это значение равно false .

Примечание: Если вы определяете параметр "location" для развернутых функций вашего расширения , то вам следует включить это immutable поле в его объект параметров.

Проверка и вывод сообщений об ошибках для значений, заданных пользователем.

При настройке параметра 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 Метки, применяемые ко всем ресурсам в расширении.