Configurer et utiliser des paramètres dans votre extension

Les paramètres sont le mécanisme grâce auquel un utilisateur personnalise chaque instance d'une extension. Les paramètres sont comme les variables d'environnement d'une extension. Les valeurs des paramètres peuvent être renseigné automatiquement (fourni par Firebase après installation) ou configurée par l'utilisateur (spécifiée par l'utilisateur pendant l'installation).

Vous pouvez vous référer à ces paramètres dans les le code source des fonctions, votre fichier extension.yaml et votre POSTINSTALL.md . Voici la syntaxe permettant de référencer un paramètre appelé PARAMETER_NAME:

  • Dans le code source de vos fonctions, utilisez la fonction Module params (par exemple, params.defineInt("PARAMETER_NAME")) ou process.env.PARAMETER_NAME.

  • Dans extension.yaml et POSTINSTALL.md, utilisez ${param:PARAMETER_NAME}

    Après l'installation, la console Firebase affiche le contenu du POSTINSTALL.md et renseigne toutes les références de paramètres avec la méthode actual pour l'instance installée.

Paramètres renseignés automatiquement

Chaque instance installée d'une extension a automatiquement accès à plusieurs les paramètres renseignés automatiquement par défaut par Firebase (consultez le tableau ci-dessous). Ces valeurs de paramètre correspondent aux valeurs par défaut du projet Firebase (comme le bucket de stockage par défaut) ou sont spécifiques à l'extension (comme l'ID d'instance de l'extension).

Toutes les valeurs de paramètres renseignées automatiquement sont immuables. Elles sont définies au moment de création de projet ou d'installation d'extensions.

Même si Firebase renseigne automatiquement ces valeurs de paramètre pour l'extension, Firebase ne provisionne pas automatiquement les produits associés pour l'utilisateur l'installation. L'utilisateur qui installe l'extension doit activer les fonctionnalités et le(s) produit(s) applicable(s) à leur projet avant l'installation. Par exemple, si votre extension implique Cloud Firestore, l'utilisateur doit configuré Cloud Firestore dans son projet. Nous vous recommandons d'informer vos utilisateurs de ces exigences dans le fichier PREINSTALL.md.

Référence pour le paramètre renseigné automatiquement Description Valeur de paramètre (fournie par Firebase)
Paramètres avec valeurs par défaut du projet Firebase
PROJECT_ID Identifiant unique du projet Firebase dans lequel l'extension est installé

Format généralisé:
project-id

Exemple de valeur:
project-123

DATABASE_URL URL de l'instance Realtime Database par défaut du projet Firebase

Format généralisé:
https://project-id-default-rtdb.firebaseio.com
(instances aux États-Unis)
ou
https://project-id-default-rtdb.region-code.firebasedatabase.app
(instances hors États-Unis)

Exemple de valeur:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

Nom de l'instance Realtime Database par défaut du projet Firebase

Généralement, cette valeur est identique à l'ID du projet ou se termine par -default-rtdb

Format généralisé:
project-id

Exemple de valeur:
project-123

STORAGE_BUCKET Nom du bucket Cloud Storage par défaut du projet Firebase

Format généralisé :
project-id.appspot.com

Exemple de valeur:
project-123.appspot.com

Paramètre avec la valeur par défaut issue de l'installation de l'extension
EXT_INSTANCE_ID

Identifiant unique de l'instance de l'extension installée

Cette valeur est générée à partir du name spécifié dans le fichier extension.yaml.

Format généralisé pour la première instance installée (attribution automatique par Firebase ; ne peuvent pas être modifiées par l'utilisateur pendant l'installation):
name-from-extension.yaml

Exemple de valeur:
my-awesome-extension


Format généralisé pour la 2e instance installée et les versions ultérieures (attribué automatiquement par Firebase ; peut être modifié par l'utilisateur) pendant l'installation):
name-from-extension.yaml-4-digit-alphanumeric-hash

Exemple de valeur:
my-awesome-extension-6m31

Paramètres configurés par l'utilisateur

Pour permettre à un utilisateur de personnaliser chaque instance installée d'une extension, vous pouvez lui demander de spécifier des valeurs de paramètre lors de l'installation. Pour demander ces valeurs, vous devez configurer les invites dans la section params de votre fichier extension.yaml.

Voici un exemple de section params, suivi d'un tableau décrivant tous les éléments disponibles de paramètres.

# 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

Dans la section params de votre fichier extension.yaml, utilisez les champs suivants : pour définir un paramètre configuré par l'utilisateur:

Champ Type Description
param
(obligatoire)
chaîne Nom du paramètre
label
(obligatoire)
chaîne

Brève description du paramètre

est affiché lorsque l'utilisateur est invité à saisir l'identifiant valeur

description
(facultatif)
chaîne

Description détaillée du paramètre

est affiché lorsque l'utilisateur est invité à saisir l'identifiant valeur

Compatible avec le format Markdown

type
(facultatif)
chaîne

Mécanisme d'entrée pour la manière dont l'utilisateur définit la valeur du paramètre (par par exemple, saisissez du texte directement ou sélectionnez-le dans la liste déroulante)

Les valeurs valides sont les suivantes:

  • string: permet la saisie de texte au format libre (selon la limite définie par votre validationRegex).
  • select: permet de sélectionner une entrée à partir d'une une liste prédéfinie d'options. Si vous spécifiez cette valeur, vous devez définissez également les options .
  • multiSelect: permet de sélectionner une ou plusieurs entrées. dans une liste d'options prédéfinie. Si vous spécifiez cette valeur, vous devez définissez également les options .
  • selectResource: permet de sélectionner un élément type de ressource Firebase (tel que un bucket Cloud Storage) du projet de l'utilisateur.

    Lorsque vous spécifiez un paramètre de ce type, les utilisateurs ont un accès Widget de sélection convivial dans l'interface utilisateur d'installation pour cela utilisez les paramètres selectResource chaque fois possible.

    Si vous spécifiez cette valeur, vous devez également définir le champ resourceType.

  • secret: permet de stocker des chaînes sensibles, telles que Clés API pour les services tiers. Ces valeurs seront stockées dans Cloud Secret Manager :

    Cloud Secret Manager est un service payant, dont l'utilisation peut entraîner des frais pour les utilisateurs qui installent votre extension. Si vous utilisez le type de paramètre secret, veillez à le documenter votre PREINSTALLATION que votre extension utilise Cloud Secret Manager.

Si ce champ est omis, la valeur par défaut du paramètre est type. sur string.

options
(obligatoire si le paramètre type est défini) est select ou multiSelect)
list

Liste des valeurs que l'utilisateur peut sélectionner

Incluez les champs label et value dans les champs Champ options:

  • label (chaîne) : brève description de l'option sélectionnable
  • value (chaîne) : valeur réelle de l'option sélectionnable

Le champ value est obligatoire pour options. .
Si label est omis, l'option de liste est définie par défaut. value

resourceType
(obligatoire si le paramètre type est défini) est selectResource)
chaîne

Type de ressource Firebase que l'utilisateur doit sélectionner. Actuellement, seuls les buckets Cloud Storage sont compatibles avec les sélecteurs de ressources:

Type de ressource ID du type
Cloud Storage bucket storage.googleapis.com/Bucket

Les valeurs resourceType inconnues seront ignorées, et l'UI affiche le paramètre sous la forme d'une entrée string au format libre. .

example
(facultatif)
chaîne

Exemple de valeur pour le paramètre

validationRegex
(facultatif)
(applicable uniquement lorsque le paramètre type est string)
chaîne

Chaîne d'expression régulière pour la validation de la valeur du paramètre configurée par l'utilisateur

Les expressions régulières sont compilées à l'aide de la bibliothèque Go: RE2

Pour en savoir plus sur la validation, consultez Validation et erreurs message ci-dessous.

validationErrorMessage
(facultatif)
chaîne

Message d'erreur à afficher si la validationRegex échec

Pour en savoir plus sur les messages d'erreur, consultez Validation et erreurs message ci-dessous.

default
(facultatif)
chaîne

Valeur par défaut du paramètre si l'utilisateur quitte le paramètre valeur vide

Le cas échéant, vous pouvez spécifier une valeur de paramètre renseigné automatiquement pour la valeur default (par exemple, le paramètre IMG_BUCKET de l'extension redimensionner les images).

required
(facultatif)
booléen

Définit si l'utilisateur peut envoyer une chaîne vide lorsqu'il vous êtes invité à saisir la valeur du paramètre

Si required est omis, la valeur par défaut est définie sur true (c'est-à-dire un paramètre obligatoire).

immutable
(facultatif)
booléen

Détermine si l'utilisateur peut modifier la valeur du paramètre après installation (par exemple, s'ils reconfigurer l'extension)

Si immutable est omis, la valeur par défaut est définie sur false

Remarque:Si vous définissez un "lieu" pour les fonctions déployées de votre extension, vous devez inclure ce champ immutable dans son paramètre .

Validation et messages d'erreur pour les valeurs configurées par l'utilisateur

Lorsque vous configurez un paramètre avec le type de string, vous devez définir la validation d'expression régulière appropriée via la méthode validationRegex.

De plus, pour de nombreuses extensions, une valeur de paramètre couramment demandée est une base de données chemin d'accès ou bucket Cloud Storage. Notez que lors de l'installation, de la reconfiguration ou de la mise à jour, le service Extensions ne valide pas les éléments suivants au moment de la saisie de la valeur du paramètre :

  • Si la base de données spécifiée ou le bucket Cloud Storage est configuré dans le projet Firebase de l'utilisateur
  • Indique si le chemin d'accès à la base de données spécifié existe dans la base de données de l'utilisateur

Toutefois, lorsque l'extension déploie réellement ses ressources, La console Firebase ou la CLI Firebase affichent un message d'erreur si la base de données référencée ou le bucket Cloud Storage n'est pas encore configuré dans le projet.

Nous vous recommandons vivement d'informer les utilisateurs de ces exigences dans le fichier PREINSTALL afin qu'ils puissent installer votre extension et qu'elle fonctionne comme prévu.

Paramètres système

Les paramètres système contrôlent la configuration de base des ressources d'une extension. Puisqu'ils sont destinés à contrôler la configuration des ressources, elles ne sont pas accessibles en tant que variables d'environnement depuis le code de votre fonction.

Normalement, vous n'avez pas besoin de déclarer quoi que ce soit pour ces paramètres dans extension.yaml Elles sont automatiquement définies pour chaque instance d'extension, Les utilisateurs ont la possibilité de définir des valeurs personnalisées lorsqu'ils installent votre .

Toutefois, si votre extension a des besoins spécifiques en ressources, vous pouvez définir des valeurs spécifiques au niveau de chaque ressource dans extension.yaml. Ces paramètres de configuration par ressource remplacent l'extension de l'utilisateur des paramètres à l'échelle de l'instance. Exemple :

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

Les paramètres système disponibles sont les suivants:

Nom Libellé (lisible par l'utilisateur) Champ correspondant dans properties Description
firebaseextensions.v1beta.function/location Emplacement location Dans quelle région Cloud Functions doit-il être déployé ?
firebaseextensions.v1beta.function/memory Mémoire de la fonction memory Combien de mégaoctets de mémoire doivent être alloués à chaque fonction ?
firebaseextensions.v1beta.function/timeoutSeconds Délai avant expiration de la fonction timeout Combien de secondes les fonctions doivent-elles exécuter avant d'expirer ?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Sortie du connecteur VPC vpcConnectorEgressSettings Contrôle le trafic sortant lorsqu'un connecteur VPC est configuré
firebaseextensions.v1beta.function/vpcConnector Connecteur VPC vpcConnector Connecte des fonctions Cloud Functions au connecteur VPC spécifié.
firebaseextensions.v1beta.function/minInstances Nombre minimal d'instances de fonction minInstances Nombre minimal d'instances de cette fonction à exécuter en même temps
firebaseextensions.v1beta.function/maxInstances Nombre maximum d'instances de fonction maxInstances Nombre maximal d'instances de cette fonction à exécuter simultanément
firebaseextensions.v1beta.function/ingressSettings Paramètres d'entrée ingressSettings Contrôle la provenance du trafic entrant
firebaseextensions.v1beta.function/labels Étiquettes labels Étiquettes à appliquer à toutes les ressources de l'extension