Parameter in der Erweiterung einrichten und verwenden

Mithilfe von Parametern können Nutzer jede installierte Instanz einer Erweiterung anpassen. Parameter sind wie die Umgebungsvariablen für eine Erweiterung. Die Werte für Parameter können entweder automatisch ausgefüllt (von Firebase nach der Installation bereitgestellt) oder vom Nutzer konfiguriert (vom Nutzer bei der Installation angegeben) werden.

Sie können auf diese Parameter im Funktionsquellcode, in der extension.yaml-Datei und in der POSTINSTALL.md-Datei Ihrer Erweiterung verweisen. So wird die Syntax für den Verweis auf einen Parameter namens PARAMETER_NAME dargestellt:

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

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

    Nach der Installation wird in der Firebase-Konsole der Inhalt der Datei POSTINSTALL.md angezeigt und alle Parameterverweise werden 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 automatisch ausgefüllte Standardparameter, die von Firebase bereitgestellt werden (siehe Tabelle unten). Diese Parameterwerte sind entweder die default-Werte für das Firebase-Projekt (z. B. der Storage-Bucket default) oder sie sind erweiterungsspezifisch (z. B. die Instanz-ID der Erweiterung).

Alle automatisch ausgefüllten Parameterwerte sind unveränderlich. Sie werden beim Erstellen des Projekts oder bei der Installation der Erweiterung festgelegt.

Auch wenn Firebase diese Parameterwerte für die Erweiterung automatisch einfügt, werden die zugehörigen Produkte während der Installation nicht automatisch für den Nutzer bereitgestellt. Der Nutzer, der die Erweiterung installiert, muss vor der Installation die zugehörigen Produkte in seinem Projekt aktivieren. Wenn Ihre Erweiterung beispielsweise Cloud Firestore enthält, muss der Nutzer Cloud Firestore in seinem Projekt einrichten. Wir empfehlen Ihnen, Ihre Nutzer in der Datei PREINSTALL.md ü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 Standard-Realtime Database-Instanz-URL des Firebase-Projekts

Generelles 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 Standardname Realtime Database der Instanz des Firebase-Projekts

Normalerweise entspricht dieser Wert der Projekt-ID oder endet auf -default-rtdb.

Generalisiertes Format:
project-id

Beispielwert:
project-123

STORAGE_BUCKET Der Standardname des Cloud Storage-Buckets des Firebase-Projekts

Allgemeines Format:
project-id.appspot.com

Beispielwert:
project-123.appspot.com

Parameter mit Standardwert aus der Erweiterungsinstallation
EXT_INSTANCE_ID

Eindeutige Kennung für die installierte Erweiterungs-Instanz

Dieser Wert wird aus dem in der Datei extension.yaml angegebenen Feld name generiert.

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

Beispielwert:
my-awesome-extension


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

Beispielwert:
my-awesome-extension-6m31

Vom Nutzer konfigurierte Parameter

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

Hier sehen Sie ein Beispiel für einen params-Abschnitt, gefolgt von einer Tabelle, in der alle verfügbaren Parameterfelder beschrieben werden.

# 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

Ausführliche 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. direkte Texteingabe oder Auswahl aus einer Drop-down-Liste)

Gültige Werte sind:

  • string: ermöglicht die Eingabe von Freitext (sofern durch Ihre validationRegex eingeschränkt)
  • select: Ermöglicht die Auswahl eines Eintrags aus einer vordefinierten Liste von Optionen. Wenn Sie diesen Wert angeben, müssen Sie auch das Feld options 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 Feld options definieren.
  • selectResource: Ermöglicht die Auswahl eines bestimmten Firebase-Ressourcentyps (z. B. eines Cloud Storage-Buckets) aus dem Projekt des Nutzers.

    Wenn Sie einen Parameter dieses Typs angeben, wird Nutzern in der Installationsoberfläche ein nutzerfreundlicheres Auswahl-Widget angezeigt. Verwenden Sie daher nach Möglichkeit selectResource-Parameter.

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

  • secret: Ermöglicht das Speichern sensibler Strings, z. B. API-Schlüssel für Dienste von Drittanbietern. 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 der Datei PREINSTALL angeben, dass Ihre Erweiterung Cloud Secret Manager verwendet.

Wenn Sie dieses Feld weglassen, wird standardmäßig type von string verwendet.

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

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): Der tatsächliche Wert der auswählbaren Option.

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

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

Der Typ der Firebase-Ressource, bei der der Nutzer zur Auswahl aufgefordert wird. Derzeit werden nur Cloud Storage-Buckets mit Ressourcenelektoren unterstützt:

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

Unbekannte resourceType-Werte werden ignoriert und der Parameter wird in der Benutzeroberfläche als kostenloses Eingabefeld für string dargestellt.

example
(optional)
String

Beispielwert für den Parameter

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

Regex-String zur Validierung des vom Nutzer konfigurierten Werts des Parameters

Regex wird mit der Go-Bibliothek RE2 kompiliert.

Weitere Informationen zur Überprüfung finden Sie unten unter Bestätigung und Fehlermeldungen.

validationErrorMessage
(optional)
String

Fehlermeldung, die angezeigt wird, wenn validationRegex fehlschlägt

Weitere Informationen zu Fehlermeldungen finden Sie unten unter Bestätigung 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 für den Wert default einen automatisch ausgefüllten Parameter angeben. Ein Beispiel hierfür ist der Parameter IMG_BUCKET der Erweiterung Bilder anpassen.

required
(optional)
boolean

Gibt an, ob der Nutzer einen leeren String einreichen 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)
boolean

Gibt an, 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 für die bereitgestellten Funktionen Ihrer Erweiterung einen Parameter „location“ definieren, sollten Sie dieses immutable-Feld in das param-Objekt aufnehmen.

Validierung und Fehlermeldungen für vom Nutzer konfigurierte Werte

Wenn Sie einen Parameter mit der type von string einrichten, müssen Sie über das Feld validationRegex des Parameters eine geeignete reguläre Ausdrucksvalidierung definieren.

Außerdem ist bei vielen Erweiterungen ein Datenbankpfad oder ein Cloud Storage-Bucket ein häufig angeforderter Parameterwert. Beachten Sie, dass der Extensions-Dienst bei der Installation, Neukonfiguration oder Aktualisierung die folgenden Werte nicht beim Eingeben des Parameterwerts validiert:

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

Wenn die Erweiterung jedoch ihre Ressourcen bereitstellt, wird in der Firebase Console oder in der Firebase-Befehlszeile eine Fehlermeldung angezeigt, wenn die referenzierte Datenbank oder der Cloud Storage-Bucket noch nicht im Projekt eingerichtet ist.

Wir empfehlen Ihnen dringend, die Nutzer in der Datei PREINSTALL über diese Anforderungen zu informieren, damit die Erweiterung nach der Installation wie erwartet installiert wird und funktioniert.

Systemparameter

Systemparameter steuern die grundlegende Konfiguration der Ressourcen einer Erweiterung. Da sie die Ressourcenkonfiguration steuern sollen, sind sie nicht als Umgebungsvariablen im Funktionscode zugänglich.

Normalerweise müssen Sie für diese Parameter in extension.yaml nichts deklarieren. Sie werden automatisch für jede Erweiterungs-Instanz definiert. Nutzer können beim Installieren Ihrer Erweiterung benutzerdefinierte Werte festlegen.

Wenn Ihre Erweiterung jedoch spezielle Ressourcenanforderungen hat, können Sie in extension.yaml bestimmte Werte pro Ressource festlegen. Diese konfigurationsspezifischen Einstellungen für Ressourcen überschreiben die sitzungsweiten Einstellungen der Erweiterung des Nutzers. 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

Folgende Systemparameter sind verfügbar:

Name Label (lesbar für Menschen) Entsprechendes Feld in properties Beschreibung
firebaseextensions.v1beta.function/location Standort location In welcher Region soll Cloud Functions bereitgestellt werden?
firebaseextensions.v1beta.function/memory Funktionsspeicher memory Wie viele Megabyte Arbeitsspeicher sollten jeder Funktion zugewiesen werden?
firebaseextensions.v1beta.function/timeoutSeconds Zeitlimit für Funktion timeout Wie lange sollen Funktionen laufen, bevor eine Zeitüberschreitung eintritt?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings Ausgehender VPC-Connector-Traffic vpcConnectorEgressSettings Steuert 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 können
firebaseextensions.v1beta.function/ingressSettings Einstellungen für eingehenden Traffic ingressSettings Hier legen Sie fest, von wo aus eingehender Traffic akzeptiert wird.
firebaseextensions.v1beta.function/labels Labels labels Labels, die auf alle Ressourcen in der Erweiterung angewendet werden sollen