Configurar y usar parámetros en su extensión

Los parámetros son el mecanismo a través del cual un usuario personaliza cada instancia instalada de una extensión. Los parámetros son como las variables de entorno de una extensión. Los valores de los parámetros pueden completarse automáticamente (proporcionados por Firebase después de la instalación) o configurarse por el usuario (especificados por el usuario durante la instalación).

Estos parámetros están disponibles para que pueda consultarlos en el código fuente de las funciones de su extensión, su archivo extension.yaml y su archivo POSTINSTALL.md . Aquí está la sintaxis sobre cómo hacer referencia a un parámetro llamado PARAMETER_NAME :

  • Dentro del código fuente de sus funciones, use el módulo params (por ejemplo, params.defineInt(" PARAMETER_NAME ") ) o process.env. PARAMETER_NAME .

  • Dentro de extension.yaml y POSTINSTALL.md , use ${param: PARAMETER_NAME } .

    Después de la instalación, Firebase console muestra el contenido del archivo POSTINSTALL.md y completa las referencias de parámetros con los valores reales de la instancia instalada.

Parámetros completados automáticamente

Cada instancia instalada de una extensión tiene acceso automáticamente a varios parámetros predeterminados que se completan automáticamente proporcionados por Firebase (consulte la tabla a continuación). Estos valores de parámetros son los valores predeterminados para el proyecto de Firebase (como el depósito de almacenamiento predeterminado ) o son específicos de la extensión (como el ID de instancia de la extensión).

Todos los valores de parámetros completados automáticamente son inmutables. Se configuran en el momento de la creación del proyecto o la instalación de la extensión.

Aunque Firebase completa automáticamente estos valores de parámetros para la extensión, Firebase no aprovisiona automáticamente los productos asociados para el usuario durante la instalación . El usuario que instala la extensión debe habilitar los productos asociados y aplicables en su proyecto antes de la instalación. Por ejemplo, si su extensión involucra Cloud Firestore, el usuario debe configurar Cloud Firestore en su proyecto. Recomendamos notificar a sus usuarios sobre estos requisitos en el archivo PREINSTALL.md .

Referencia para el parámetro autocompletado Descripción Valor del parámetro (proporcionado por Firebase)
Parámetros con valores predeterminados del proyecto Firebase
PROJECT_ID Identificador único para el proyecto de Firebase en el que está instalada la extensión.

Formato generalizado:
project-id

Valor de ejemplo:
project-123

DATABASE_URL La URL de la instancia de Realtime Database predeterminada del proyecto Firebase

Formato generalizado:
https:// project-id -default-rtdb.firebaseio.com
(instancias de EE. UU.)
o
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(instancias fuera de EE. UU.)

Valor de ejemplo:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

El nombre de instancia de Realtime Database predeterminado del proyecto Firebase

Normalmente, este valor es el mismo que el ID del proyecto o termina en -default-rtdb .

Formato generalizado:
project-id

Valor de ejemplo:
project-123

STORAGE_BUCKET El nombre del depósito predeterminado de Cloud Storage del proyecto de Firebase

Formato generalizado:
project-id .appspot.com

Valor de ejemplo:
project-123.appspot.com

Parámetro con valor predeterminado de la instalación de la extensión.
EXT_INSTANCE_ID

Identificador único para la instancia de extensión instalada

Este valor se genera a partir del campo name especificado en el archivo extension.yaml .

Formato generalizado para la primera instancia instalada (asignado automáticamente por Firebase; el usuario no puede modificarlo durante la instalación):
name-from-extension.yaml

Valor de ejemplo:
my-awesome-extension


Formato generalizado para la segunda instancia instalada y superiores (asignado automáticamente por Firebase; el usuario puede modificarlo durante la instalación):
name-from-extension.yaml - 4-digit-alphanumeric-hash

Valor de ejemplo:
my-awesome-extension-6m31

Parámetros configurados por el usuario

Para permitir que un usuario personalice cada instancia instalada de una extensión, puede pedirle que especifique valores de parámetros durante la instalación. Para solicitar estos valores, configure las indicaciones en la sección params de su archivo extension.yaml .

Aquí hay una sección params de ejemplo, seguida de una tabla que describe todos los campos de parámetros disponibles.

# 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

En la sección params de su archivo extension.yaml , use los siguientes campos para definir un parámetro configurado por el usuario:

Campo Tipo Descripción
param
(requerido)
cadena Nombre del parámetro
label
(requerido)
cadena

Breve descripción del parámetro.

Se muestra al usuario cuando se le solicita el valor del parámetro.

description
(opcional)
cadena

Descripción detallada del parámetro.

Se muestra al usuario cuando se le solicita el valor del parámetro.

Admite rebajas

type
(opcional)
cadena

Mecanismo de entrada sobre cómo el usuario establece el valor del parámetro (por ejemplo, ingresar texto directamente o seleccionar de la lista desplegable)

Los valores válidos incluyen los siguientes:

  • string : permite la entrada de texto de formato libre (según lo limite su validationRegex )
  • select : permite seleccionar una entrada de una lista predefinida de opciones. Si especifica este valor, también debe definir el campo options .
  • multiSelect : permite la selección de una o más entradas de una lista predefinida de opciones. Si especifica este valor, también debe definir el campo options .
  • selectResource : permite la selección de un tipo específico de recurso de Firebase (como un depósito de Cloud Storage) del proyecto del usuario.

    Cuando especifica un parámetro de este tipo, los usuarios obtendrán un widget de selección más fácil de usar en la interfaz de usuario de instalación; por este motivo, utilice los parámetros selectResource siempre que sea posible.

    Si especifica este valor, también debe definir el campo resourceType .

  • secret : permite el almacenamiento de cadenas confidenciales, como claves API para servicios de terceros. Estos valores se almacenarán en Cloud Secret Manager .

    Cloud Secret Manager es un servicio pago, cuyo uso puede generar cargos para los usuarios que instalen su extensión. Si usa el tipo de parámetro secret , asegúrese de documentar en su archivo PREINSTALL que su extensión usa Cloud Secret Manager.

Si se omite este campo, el parámetro predeterminado es el type de string .

options
(obligatorio si type de parámetro es select o multiSelect )
lista

Lista de valores entre los que el usuario puede seleccionar

Incluya campos label y value dentro del campo options :

  • label (cadena) : breve descripción de la opción seleccionable
  • value (cadena) : valor real de la opción seleccionable

El campo value es obligatorio para el campo options .
Si se omite label , la opción de lista muestra de forma predeterminada value .

resourceType
(obligatorio si type de parámetro es selectResource )
cadena

El tipo de recurso de Firebase que se solicitará al usuario que seleccione. Actualmente, solo los depósitos de Cloud Storage admiten selectores de recursos:

Tipo de recurso Escriba identificación
Cubo de almacenamiento en la nube storage.googleapis.com/Bucket

Los valores desconocidos resourceType se ignorarán y la interfaz de usuario representará el parámetro como un campo de entrada string de formato libre.

example
(opcional)
cadena

Valor de ejemplo para el parámetro

validationRegex
(opcional)
(solo aplicable cuando el type de parámetro es string )
cadena

Cadena de expresiones regulares para la validación del valor configurado por el usuario del parámetro

Regex se compila usando la biblioteca go: RE2

Para obtener detalles sobre la validación, consulte Validación y mensajes de error a continuación.

validationErrorMessage
(opcional)
cadena

Mensaje de error que se mostrará si falla validationRegex

Para obtener detalles sobre los mensajes de error, consulte Validación y mensajes de error a continuación.

default
(opcional)
cadena

Valor predeterminado para el parámetro si el usuario deja el valor del parámetro en blanco

Si corresponde, puede especificar un valor de parámetro que se completa automáticamente para el valor default (para ver un ejemplo, consulte el parámetro IMG_BUCKET de la extensión Resize Images ).

required
(opcional)
booleano

Define si el usuario puede enviar una cadena vacía cuando se le solicita el valor del parámetro.

Si se omite required , este valor predeterminado es true (es decir, un parámetro obligatorio).

immutable
(opcional)
booleano

Define si el usuario puede cambiar el valor del parámetro después de la instalación (por ejemplo, si reconfigura la extensión)

Si se omite immutable , este valor predeterminado es false .

Nota: Si define un parámetro de "ubicación" para las funciones implementadas de su extensión , debe incluir este campo immutable en su objeto de parámetro.

Validación y mensajes de error para valores configurados por el usuario.

Cuando configura un parámetro con el type de string , debe definir la validación de expresiones regulares adecuada a través del campo validationRegex del parámetro.

Además, para muchas extensiones, un valor de parámetro solicitado comúnmente es una ruta de base de datos o un depósito de Cloud Storage. Tenga en cuenta que durante la instalación, reconfiguración o actualización, el servicio Extensiones no valida lo siguiente en el momento de ingresar el valor del parámetro:

  • Si la base de datos especificada o el depósito de Cloud Storage están configurados dentro del proyecto de Firebase del usuario
  • Si la ruta de la base de datos especificada existe dentro de la base de datos del usuario

Sin embargo, cuando la extensión realmente esté implementando sus recursos, Firebase console o Firebase CLI mostrarán un mensaje de error si la base de datos a la que se hace referencia o el depósito de Cloud Storage aún no están configurados en el proyecto.

Le recomendamos encarecidamente que notifique a los usuarios en el archivo PREINSTALL sobre estos requisitos para que cuando instalen su extensión, se instale correctamente y funcione como se esperaba.

Parámetros del sistema

Los parámetros del sistema controlan la configuración básica de los recursos de una extensión. Dado que están destinados a controlar la configuración de recursos, no son accesibles como variables de entorno desde su código de función.

Normalmente no es necesario declarar nada para estos parámetros en extension.yaml . Se definen automáticamente para cada instancia de extensión y los usuarios tienen la oportunidad de establecer valores personalizados cuando instalan su extensión.

Sin embargo, si su extensión tiene requisitos de recursos especiales, puede establecer valores específicos en un nivel por recurso en extension.yaml . Estos ajustes de configuración por recurso anularán los ajustes de toda la instancia de extensión del usuario. Por ejemplo:

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

Los parámetros del sistema disponibles son:

Nombre Etiqueta (amigable para los humanos) Campo correspondiente en properties Descripción
firebaseextensions.v1beta.function/ubicación Ubicación location ¿En qué región se deberían implementar Cloud Functions?
firebaseextensions.v1beta.function/memoria Memoria de funciones memory ¿Cuántos megabytes de memoria se deben asignar a cada función?
firebaseextensions.v1beta.function/timeoutSeconds Tiempo de espera de la función timeout ¿Cuántos segundos deben ejecutarse las funciones antes de que se agote el tiempo de espera?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Salida del conector VPC vpcConnectorEgressSettings Controla el tráfico saliente cuando se configura un conector VPC
firebaseextensions.v1beta.function/vpcConnector Conector VPC vpcConnector Conecta Cloud Functions al conector VPC especificado.
firebaseextensions.v1beta.function/minInstancias Instancias de función mínima minInstances El número mínimo de instancias de esta función para ejecutar a la vez
firebaseextensions.v1beta.function/maxInstances Instancias de función máximas maxInstances El número máximo de instancias de esta función que se ejecutarán a la vez
firebaseextensions.v1beta.function/ingressSettings Configuración de ingreso ingressSettings Controla desde dónde se acepta el tráfico entrante
firebaseextensions.v1beta.function/labels Etiquetas labels Etiquetas para aplicar a todos los recursos de la extensión.