Configure e use parâmetros em sua extensão

Os parâmetros são o mecanismo pelo qual um usuário personaliza cada instância instalada de uma extensão. Os parâmetros são como variáveis ​​de ambiente para uma extensão. Os valores dos parâmetros podem ser preenchidos automaticamente (fornecidos pelo Firebase após a instalação) ou configurados pelo usuário (especificados pelo usuário durante a instalação).

Esses parâmetros estão disponíveis para referência no código-fonte das funções da sua extensão, no arquivo extension.yaml e no arquivo POSTINSTALL.md . Esta é a sintaxe de como fazer referência a um parâmetro chamado PARAMETER_NAME :

  • No código-fonte de suas funções, use o módulo params (por exemplo, params.defineInt(" PARAMETER_NAME ") ) ou process.env. PARAMETER_NAME .

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

    Após a instalação, o console do Firebase exibe o conteúdo do arquivo POSTINSTALL.md e preenche todas as referências de parâmetro com os valores reais da instância instalada.

Parâmetros preenchidos automaticamente

Cada instância instalada de uma extensão tem acesso automático a vários parâmetros padrão preenchidos automaticamente fornecidos pelo Firebase (consulte a tabela abaixo). Esses valores de parâmetro são os valores padrão do projeto do Firebase (como o intervalo de armazenamento padrão ) ou são específicos da extensão (como o ID da instância da extensão).

Todos os valores de parâmetros preenchidos automaticamente são imutáveis. Eles são definidos no momento da criação do projeto ou instalação da extensão.

Embora o Firebase preencha automaticamente esses valores de parâmetro para a extensão, o Firebase não provisiona automaticamente os produtos associados para o usuário durante a instalação . O usuário que instala a extensão deve habilitar os produtos associados e aplicáveis ​​em seu projeto antes da instalação. Por exemplo, se sua extensão envolver o Cloud Firestore, o usuário deverá configurar o Cloud Firestore no projeto. Recomendamos notificar seus usuários sobre esses requisitos no arquivo PREINSTALL.md .

Referência para parâmetro preenchido automaticamente Descrição Valor do parâmetro (fornecido pelo Firebase)
Parâmetros com valores padrão do projeto Firebase
PROJECT_ID Identificador exclusivo do projeto do Firebase em que a extensão está instalada

Formato generalizado:
project-id

Valor de exemplo:
project-123

DATABASE_URL O URL padrão da instância do Realtime Database do projeto Firebase

Formato generalizado:
https:// project-id -default-rtdb.firebaseio.com
(instâncias dos EUA)
ou
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(instâncias fora dos EUA)

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

DATABASE_INSTANCE

O nome da instância padrão do Realtime Database do projeto Firebase

Normalmente, esse valor é igual ao ID do projeto ou termina em -default-rtdb .

Formato generalizado:
project-id

Valor de exemplo:
project-123

STORAGE_BUCKET O nome do intervalo padrão do Cloud Storage do projeto do Firebase

Formato generalizado:
project-id .appspot.com

Valor de exemplo:
project-123.appspot.com

Parâmetro com valor padrão da instalação da extensão
EXT_INSTANCE_ID

Identificador exclusivo da instância de extensão instalada

Este valor é gerado a partir do campo name especificado no arquivo extension.yaml .

Formato generalizado para a primeira instância instalada (atribuído automaticamente pelo Firebase; não pode ser modificado pelo usuário durante a instalação):
name-from-extension.yaml

Valor de exemplo:
my-awesome-extension


Formato generalizado para a segunda instância instalada e superior (atribuído automaticamente pelo Firebase; pode ser modificado pelo usuário durante a instalação):
name-from-extension.yaml - 4-digit-alphanumeric-hash

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

Parâmetros configurados pelo usuário

Para permitir que um usuário personalize cada instância instalada de uma extensão, você pode pedir ao usuário para especificar valores de parâmetros durante a instalação. Para solicitar esses valores, configure os prompts na seção params do seu arquivo extension.yaml .

Aqui está um exemplo de seção params , seguida por uma tabela que descreve todos os campos de parâmetros disponíveis.

# 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

Na seção params do seu arquivo extension.yaml , use os seguintes campos para definir um parâmetro configurado pelo usuário:

Campo Tipo Descrição
param
(obrigatório)
corda Nome do parâmetro
label
(obrigatório)
corda

Breve descrição do parâmetro

Exibido ao usuário quando o valor do parâmetro for solicitado

description
(opcional)
corda

Descrição detalhada do parâmetro

Exibido ao usuário quando o valor do parâmetro for solicitado

Suporta remarcação

type
(opcional)
corda

Mecanismo de entrada sobre como o usuário define o valor do parâmetro (por exemplo, insira o texto diretamente ou selecione na lista suspensa)

Os valores válidos incluem o seguinte:

  • string : permite a entrada de texto em formato livre (conforme limitado por sua validationRegex )
  • select : permite a seleção de uma entrada de uma lista predefinida de opções. Se você especificar esse valor, também deverá definir o campo options .
  • multiSelect : permite a seleção de uma ou mais entradas de uma lista pré-definida de opções. Se você especificar esse valor, também deverá definir o campo options .
  • selectResource : permite a seleção de um tipo específico de recurso do Firebase (como um bucket do Cloud Storage) do projeto do usuário.

    Ao especificar um parâmetro desse tipo, os usuários obterão um widget de seleção mais amigável na interface de instalação; por esse motivo, use parâmetros selectResource sempre que possível.

    Se você especificar esse valor, também deverá definir o campo resourceType .

  • secret : permite o armazenamento de strings confidenciais, como chaves de API para serviços de terceiros. Esses valores serão armazenados no Cloud Secret Manager .

    Cloud Secret Manager é um serviço pago, cujo uso pode resultar em cobranças para os usuários que instalarem sua extensão. Se você usar o tipo de parâmetro secret , certifique-se de documentar em seu arquivo PREINSTALL que sua extensão usa o Cloud Secret Manager.

Se este campo for omitido, o parâmetro será padronizado como type de string .

options
(obrigatório se type de parâmetro for select ou multiSelect )
lista

Lista de valores a partir dos quais o usuário pode selecionar

Inclua campos label e value no campo options :

  • label (string) : breve descrição da opção selecionável
  • value (string) : valor real da opção selecionável

O campo value é obrigatório para o campo options .
Se label for omitido, a opção de lista será padronizada para exibir value .

resourceType
(obrigatório se type de parâmetro for selectResource )
corda

O tipo de recurso do Firebase a ser solicitado ao usuário para selecionar. Atualmente, apenas os buckets do Cloud Storage são compatíveis com seletores de recursos:

Tipo de recurso ID do tipo
Intervalo do Cloud Storage storage.googleapis.com/Bucket

Valores resourceType desconhecidos serão ignorados e a UI renderizará o parâmetro como um campo de entrada string de formato livre.

example
(opcional)
corda

Valor de exemplo para o parâmetro

validationRegex
(opcional)
(aplicável apenas quando o type de parâmetro é string )
corda

String Regex para validação do valor configurado pelo usuário do parâmetro

Regex é compilado usando a biblioteca go: RE2

Para obter detalhes sobre validação, consulte Validação e mensagens de erro abaixo.

validationErrorMessage
(opcional)
corda

Mensagem de erro a ser exibida se a validationRegex falhar

Para obter detalhes sobre mensagens de erro, consulte Validação e mensagens de erro abaixo.

default
(opcional)
corda

Valor padrão para o parâmetro se o usuário deixar o valor do parâmetro em branco

Se aplicável, você pode especificar um valor de parâmetro preenchido automaticamente para o valor default (por exemplo, consulte o parâmetro IMG_BUCKET da extensão Resize Images ).

required
(opcional)
boleano

Define se o usuário pode enviar uma string vazia quando for solicitado o valor do parâmetro

Se required for omitido, esse valor será padronizado como true (ou seja, um parâmetro obrigatório).

immutable
(opcional)
boleano

Define se o usuário pode alterar o valor do parâmetro após a instalação (por exemplo, se reconfigurar a extensão)

Se immutable for omitido, esse valor será padronizado como false .

Observação: se você definir um parâmetro "local" para as funções implantadas de sua extensão , deverá incluir esse campo immutable em seu objeto param.

Validação e mensagens de erro para valores configurados pelo usuário

Ao configurar um parâmetro com o type string , você precisa definir a validação de regex apropriada por meio do campo validationRegex do parâmetro.

Além disso, para muitas extensões, um valor de parâmetro comumente solicitado é um caminho de banco de dados ou intervalo do Cloud Storage. Esteja ciente de que durante a instalação, reconfiguração ou atualização, o serviço de extensões não valida o seguinte no momento da entrada do valor do parâmetro:

  • Se o banco de dados ou bucket do Cloud Storage especificado está configurado no projeto do Firebase do usuário
  • Se o caminho do banco de dados especificado existe no banco de dados do usuário

No entanto, quando a extensão estiver realmente implantando seus recursos, o console do Firebase ou a CLI do Firebase exibirá uma mensagem de erro se o banco de dados referenciado ou bucket do Cloud Storage ainda não estiver configurado no projeto.

Recomendamos fortemente que você notifique os usuários no arquivo PREINSTALL sobre esses requisitos para que, quando instalarem sua extensão, ela seja instalada com êxito e funcione conforme o esperado.

Parâmetros do sistema

Os parâmetros do sistema controlam a configuração básica dos recursos de uma extensão. Uma vez que se destinam a controlar a configuração de recursos, não são acessíveis como variáveis ​​de ambiente a partir do seu código de função.

Normalmente você não precisa declarar nada para esses parâmetros em extension.yaml . Eles são definidos automaticamente para cada instância de extensão e os usuários têm a oportunidade de definir valores personalizados ao instalar sua extensão.

No entanto, se sua extensão tiver requisitos de recursos especiais, você poderá definir valores específicos por recurso em extension.yaml . Essas definições de configuração por recurso substituirão as configurações de extensão da instância do usuário. Por exemplo:

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

Os parâmetros do sistema disponíveis são:

Nome Rótulo (amigável ao ser humano) Campo correspondente nas properties Descrição
firebaseextensions.v1beta.function/location Localização location Em qual região o Cloud Functions deve ser implantado?
firebaseextensions.v1beta.function/memory Memória de função memory Quantos megabytes de memória devem ser alocados para cada função?
firebaseextensions.v1beta.function/timeoutSeconds Tempo limite da função timeout Quantos segundos as funções devem ser executadas antes do tempo limite?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Saída do conector VPC vpcConnectorEgressSettings Controla o tráfego de saída quando um conector VPC está configurado
firebaseextensions.v1beta.function/vpcConnector Conector VPC vpcConnector Conecta o Cloud Functions ao conector VPC especificado.
firebaseextensions.v1beta.function/minInstances Instâncias mínimas de função minInstances O número mínimo de instâncias desta função para serem executadas de uma vez
firebaseextensions.v1beta.function/maxInstances Máximo de instâncias de função maxInstances O número máximo de instâncias desta função a serem executadas de uma vez
firebaseextensions.v1beta.function/ingressSettings Configurações de entrada ingressSettings Controla de onde o tráfego de entrada é aceito
firebaseextensions.v1beta.function/labels Etiquetas labels Rótulos a serem aplicados a todos os recursos da extensão