Parameter in der Erweiterung einrichten und verwenden

Parameter sind der Mechanismus, mit dem ein Nutzer jede installierte Instanz einer Erweiterung anpassen kann. Parameter sind wie die Umgebungsvariablen für eine Erweiterung. Die Werte für Parameter können entweder automatisch ausgefüllt werden (von Firebase nach der Installation bereitgestellt) oder vom Nutzer konfiguriert werden (vom Nutzer während der Installation angegeben).

Sie können in Ihrem Quellcode der Erweiterungsfunktionen , in der Datei extension.yaml und in der Datei POSTINSTALL.md auf diese Parameter verweisen. Hier ist die Syntax für den Verweis auf einen Parameter namens PARAMETER_NAME:

  • Verwenden Sie im Quellcode Ihrer Funktionen das params Modul (z. B. params.defineInt("PARAMETER_NAME")) oder process.env.PARAMETER_NAME.

  • Verwenden Sie in extension.yaml und POSTINSTALL.md die Syntax ${param:PARAMETER_NAME}.

    Nach der Installation werden in der Firebase Console die Inhalte der POSTINSTALL.md Datei angezeigt und alle Parameterverweise mit den tatsächlichen Werten für die installierte Instanz ausgefüllt.

Automatisch ausgefüllte Parameter

Jede installierte Instanz einer Erweiterung hat automatisch Zugriff auf mehrere standardmäßige automatisch ausgefüllte Parameter, die von Firebase bereitgestellt werden (siehe Tabelle unten). Diese Parameterwerte sind entweder die Standardwerte für das Firebase Projekt (z. B. der Standard-Storage-Bucket) oder sie sind spezifisch für die Erweiterung (z. B. die Instanz-ID der Erweiterung).

Alle automatisch ausgefüllten Parameterwerte sind unveränderlich. Sie werden bei der Projekterstellung oder der Installation der Erweiterung festgelegt.

Obwohl Firebase diese Parameterwerte automatisch für die Erweiterung ausfüllt, Firebase stellt die zugehörigen Produkte während der Installationnicht automatisch für den Nutzer bereit. Der Nutzer, der die Erweiterung installiert, muss die zugehörigen und anwendbaren Produkte vor der Installation in seinem Projekt aktivieren. Wenn Ihre Erweiterung beispielsweise Cloud Firestore umfasst, muss der Nutzer Cloud Firestore in seinem Projekt einrichten. Wir empfehlen, Ihre Nutzer in der PREINSTALL.md Datei über diese Anforderungen zu informieren.

Referenz für automatisch ausgefüllte Parameter Beschreibung Parameterwert (von Firebase bereitgestellt)
Parameter mit Standardwerten aus dem Firebase-Projekt
PROJECT_ID Eindeutige Kennung für das Firebase-Projekt, in dem die Erweiterung installiert ist

Allgemeines Format:
project-id

Beispielwert:
project-123

DATABASE_URL Die URL der Standard Realtime Database Instanz des Firebase-Projekts

Allgemeines Format:
https://project-id-default-rtdb.firebaseio.com
(Instanzen in den USA)
oder
https://project-id-default-rtdb.region-code.firebasedatabase.app
(Instanzen außerhalb der USA)

Beispielwert:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

Der Name der Standard Realtime Database Instanz des Firebase-Projekts

Normalerweise ist dieser Wert mit der Projekt-ID identisch oder endet mit -default-rtdb.

Allgemeines Format:
project-id

Beispielwert:
project-123

STORAGE_BUCKET Der Name des Standard-Cloud Storage-Buckets des Firebase-Projekts

Allgemeines Format:
PROJECT_ID.firebasestorage.app

Beispielwert:
project-123.firebasestorage.app

Parameter mit Standardwert aus der Erweiterungsinstallation
EXT_INSTANCE_ID

Eindeutige Kennung für die installierte Erweiterungsinstanz

Dieser Wert wird aus dem name Feld generiert, das in der extension.yaml Datei angegeben ist.

Allgemeines Format für die erste installierte Instanz (wird automatisch von Firebase zugewiesen; kann während der Installation nicht vom Nutzer geändert werden):
name-from-extension.yaml

Beispielwert:
my-awesome-extension


Allgemeines Format für die zweite und alle weiteren installierten Instanzen (wird automatisch von Firebase zugewiesen; kann während der Installation vom Nutzer geändert werden):
name-from-extension.yaml-4-digit-alphanumeric-hash

Beispielwert:
my-awesome-extension-6m31

Benutzerdefinierte Parameter

Wenn Sie es einem Nutzer ermöglichen möchten, jede installierte Instanz einer Erweiterung anzupassen, können Sie ihn auffordern, während der Installation Parameterwerte anzugeben. Um diese Werte anzufordern, richten Sie die Prompts im Abschnitt params Ihrer extension.yaml Datei ein.

Hier sehen Sie ein Beispiel für einen params Abschnitt, gefolgt von einer Tabelle mit allen verfügbaren Parameterfeldern.

# 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

Verwenden Sie im Abschnitt params der Datei extension.yaml die folgenden Felder, um einen benutzerdefinierten Parameter zu definieren:

Feld Typ Beschreibung
param
(erforderlich)
String Name des Parameters
label
(erforderlich)
String

Kurze Beschreibung des Parameters

Wird dem Nutzer angezeigt, wenn er nach dem Wert des Parameters gefragt wird

description
(optional)
String

Detaillierte Beschreibung des Parameters

Wird dem Nutzer angezeigt, wenn er nach dem Wert des Parameters gefragt wird

Unterstützt Markdown

type
(optional)
String

Eingabemechanismus, mit dem der Nutzer den Wert des Parameters festlegt (z. B. Text direkt eingeben oder aus einer Drop-down-Liste auswählen)

Gültige Werte sind:

  • string: Ermöglicht die Eingabe von Freiformtext (begrenzt durch validationRegex)
  • select: Ermöglicht die Auswahl eines Eintrags aus einer vordefinierten Liste von Optionen. Wenn Sie diesen Wert angeben, müssen Sie auch das options Feld definieren.
  • multiSelect: Ermöglicht die Auswahl eines oder mehrerer Einträge aus einer vordefinierten Liste von Optionen. Wenn Sie diesen Wert angeben, müssen Sie auch das options Feld definieren.
  • selectResource: Ermöglicht die Auswahl eines bestimmten Typs von Firebase-Ressource (z. B. eines Cloud Storage Buckets) aus dem Projekt des Nutzers.

    Wenn Sie einen Parameter dieses Typs angeben, wird Nutzern in der Installations-UI ein benutzerfreundlicheres Auswahl-Widget angezeigt. Verwenden Sie daher nach Möglichkeit selectResource Parameter.

    Wenn Sie diesen Wert angeben, müssen Sie auch das resourceType Feld definieren.

  • secret: Ermöglicht die Speicherung vertraulicher Strings wie API-Schlüssel für Drittanbieterdienste. Diese Werte werden in Cloud Secret Manager gespeichert.

    Cloud Secret Manager ist ein kostenpflichtiger Dienst, dessen Nutzung für Nutzer, die Ihre Erweiterung installieren, zu Kosten führen kann. Wenn Sie den Parametertyp secret verwenden, müssen Sie in Ihrer PREINSTALL Datei dokumentieren, dass Ihre Erweiterung Cloud Secret Manager verwendet.

Wenn dieses Feld weggelassen wird, wird für den Parameter standardmäßig type vom Typ string verwendet.

options
(erforderlich, wenn der Parameter type select oder multiSelect ist)
Liste

Liste der Werte, aus denen der Nutzer auswählen kann

Fügen Sie die Felder label und value in das Feld options ein:

  • label (String): Kurze Beschreibung der auswählbaren Option
  • value (String): Tatsächlicher Wert der auswählbaren Option

Das Feld value ist für das Feld options erforderlich.
Wenn label weggelassen wird, wird standardmäßig value als Listenoption angezeigt.

resourceType
(erforderlich, wenn der Parameter type selectResource ist)
String

Der Typ der Firebase-Ressource, die der Nutzer auswählen soll. Derzeit unterstützen nur Cloud Storage Buckets Ressourcenauswahlen:

Ressourcentyp Typ-ID
Cloud Storage Bucket storage.googleapis.com/Bucket

Unbekannte resourceType Werte werden ignoriert und in der UI wird der Parameter als Freiform string Eingabefeld gerendert.

example
(optional)
String

Beispielwert für den Parameter

validationRegex
(optional)
(gilt nur, wenn der Parameter type ist string)
String

Regulärer Ausdruck für die Validierung des benutzerdefinierten Werts des Parameters

Der reguläre Ausdruck wird mit der Go-Bibliothek RE2 kompiliert.

Weitere Informationen zur Validierung finden Sie unten unter Validierung und Fehlermeldungen.

validationErrorMessage
(optional)
String

Fehlermeldung, die angezeigt wird, wenn die validationRegex fehlschlägt

Weitere Informationen zu Fehlermeldungen finden Sie unten unter Validierung und Fehlermeldungen.

default
(optional)
String

Standardwert für den Parameter, wenn der Nutzer den Wert des Parameters leer lässt

Falls zutreffend, können Sie einen automatisch ausgefüllten Parameter Wert für den default Wert angeben (ein Beispiel finden Sie im IMG_BUCKET Parameter der Resize Images Erweiterung).

required
(optional)
Boolescher Wert

Definiert, ob der Nutzer einen leeren String senden kann, wenn er nach dem Wert des Parameters gefragt wird

Wenn required weggelassen wird, ist der Standardwert true (d. h. ein erforderlicher Parameter).

immutable
(optional)
Boolescher Wert

Definiert, ob der Nutzer den Wert des Parameters nach der Installation ändern kann (z. B. wenn er die Erweiterung neu konfiguriert )

Wenn immutable weggelassen wird, ist der Standardwert false.

Hinweis: Wenn Sie einen Parameter vom Typ „Standort“ für die bereitgestellten Funktionen Ihrer Erweiterung definieren, sollten Sie dieses Feld immutable in das zugehörige Parameterobjekt einfügen.

Validierung und Fehlermeldungen für benutzerdefinierte Werte

Wenn Sie einen Parameter mit dem type vom Typ string einrichten, müssen Sie eine entsprechende Regex-Validierung über das Feld des Parameters validationRegex definieren.

Außerdem ist für viele Erweiterungen ein häufig angeforderter Parameterwert ein Datenbank pfad oder Cloud Storage Bucket. Beachten Sie, dass der Extensions Dienst während der Installation, Neukonfiguration oder Aktualisierung die folgenden Werte zum Zeitpunkt der Parameterwert-Eingabe nicht validiert:

  • Ob die angegebene Datenbank oder der angegebene Cloud Storage Bucket im Firebase-Projekt des Nutzers eingerichtet ist
  • Ob der angegebene Datenbankpfad in der Datenbank des Nutzers vorhanden ist

Wenn die Erweiterung jedoch tatsächlich ihre Ressourcen bereitstellt, wird in der Firebase Konsole oder der Firebase CLI eine Fehlermeldung angezeigt, wenn die referenzierte Datenbank oder der Cloud Storage Bucket noch nicht im Projekt eingerichtet ist.

Wir empfehlen dringend, dass Sie Nutzer in der PREINSTALL Datei über diese Anforderungen informieren, damit die Installation Ihrer Erweiterung erfolgreich ist und sie wie erwartet funktioniert.

Systemparameter

Systemparameter steuern die grundlegende Konfiguration der Ressourcen einer Erweiterung. Da sie zur Steuerung der Ressourcenkonfiguration dienen, sind sie nicht als Umgebungsvariablen im Funktionscode verfügbar.

Normalerweise müssen Sie für diese Parameter in extension.yaml nichts deklarieren. Sie werden automatisch für jede Erweiterungsinstanz definiert, und Nutzer haben die Möglichkeit, benutzerdefinierte Werte festzulegen, wenn sie Ihre Erweiterung installieren.

Wenn Ihre Erweiterung jedoch spezielle Ressourcenanforderungen hat, können Sie in extension.yaml bestimmte Werte auf Ressourcenebene festlegen. Diese Konfigurationseinstellungen pro Ressource überschreiben die Einstellungen des Nutzers für die gesamte Erweiterungs instanz. Beispiel:

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

Die verfügbaren Systemparameter sind:

Name Label (nutzerfreundlich) Entsprechendes Feld in properties Beschreibung
firebaseextensions.v1beta.function/location Standort location In welcher Region sollen Cloud Functions bereitgestellt werden?
firebaseextensions.v1beta.function/memory Funktionsspeicher memory Wie viele Megabyte Arbeitsspeicher sollen jeder Funktion zugewiesen werden?
firebaseextensions.v1beta.function/timeoutSeconds Zeitlimit für Funktion timeout Nach wie vielen Sekunden sollen Funktionen das Zeitlimit überschreiten?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Ausgehender VPC-Traffic vpcConnectorEgressSettings Steuert den ausgehenden Traffic, wenn ein VPC-Connector konfiguriert ist
firebaseextensions.v1beta.function/vpcConnector VPC-Connector vpcConnector Verbindet Cloud Functions mit dem angegebenen VPC-Connector.
firebaseextensions.v1beta.function/minInstances Mindestanzahl von Funktionsinstanzen minInstances Die Mindestanzahl von Instanzen dieser Funktion, die gleichzeitig ausgeführt werden sollen
firebaseextensions.v1beta.function/maxInstances Maximale Anzahl von Funktionsinstanzen maxInstances Die maximale Anzahl von Instanzen dieser Funktion, die gleichzeitig ausgeführt werden sollen
firebaseextensions.v1beta.function/ingressSettings Einstellungen für eingehenden Traffic ingressSettings Steuert, woher eingehender Traffic akzeptiert wird
firebaseextensions.v1beta.function/labels Labels labels Labels, die auf alle Ressourcen in der Erweiterung angewendet werden sollen