Puoi installare (e gestire) qualsiasi delle estensioni Firebase ufficiali utilizzando la console Firebase, l'interfaccia a riga di comando Firebase o un SDK generato automaticamente.
Assicurati di esaminare le differenze tra le azioni supportate per ciascun metodo di installazione.
L'installazione utilizzando un SDK generato automaticamente è una nuova opzione per installare e gestire le estensioni. Con questa opzione, utilizzi la CLI per generare automaticamente un SDK Node per una versione specifica dell'estensione, che puoi importare come dipendenza ordinaria nelle tue funzioni Cloud JavaScript o TypeScript.
Questo SDK generato automaticamente contiene:
- Un'interfaccia che rappresenta i parametri dell'estensione e le dichiarazioni di tipo per la maggior parte dei tipi di parametri non primitivi.
- Una funzione di costruttore che inizializza un'istanza dell'estensione
- Un'estensione di classe che contiene gli attivatori Eventarc per tutti gli eventi emessi dall'estensione.
Dopo aver generato un SDK di estensione, tutta la configurazione dell'estensione avviene nel codice.
L'utilizzo di questa opzione di installazione può semplificare notevolmente la gestione di più istanze di estensioni, in particolare nei progetti che contengono funzioni Cloud definite al di fuori delle estensioni.
Per installare o gestire le estensioni, devi disporre di uno dei seguenti ruoli: Proprietario o Editor o Amministratore Firebase.
Per installare un'estensione, il progetto deve essere nel piano Blaze (pagamento a consumo). Sebbene l'installazione di un'estensione non sia a pagamento, ti potrebbe essere addebitato l'utilizzo dei servizi Firebase o Cloud come Cloud Secret Manager, se il tuo utilizzo supera il livello senza costi dei servizi.
Prima di iniziare
Se non lo hai già fatto, aggiungi Firebase al tuo progetto.
Se non l'hai ancora fatto, esegui l'upgrade del progetto al piano Blaze (pagamento a consumo).
Prendi nota dell'ID progetto Firebase o dell'alias progetto configurato in precedenza.
- ID progetto: esegui
firebase projects:list
da qualsiasi posizione sul computer. - Alias progetto: esegui
firebase use
dalla directory dell'app locale.
- ID progetto: esegui
Passaggio 1: visualizza le informazioni dettagliate su un'estensione
Questo passaggio è facoltativo, ma vivamente consigliato.
Prima di installare un Firebase Extension, ti consigliamo di esaminare le informazioni dettagliate sull'estensione, tra cui:
- Come funziona l'estensione, eventuali attività di preinstallazione e dettagli sull'estensione
- Informazioni generali di identificazione e descrizione
- Indica se le attività dell'estensione richiedono un account di fatturazione
- Servizi Google (API) e ruoli di accesso necessari per il funzionamento
- Risorse create per l'estensione (ad esempio funzioni)
- Descrizioni dei parametri configurabili dall'utente
Per visualizzare le informazioni dettagliate di un'estensione:
Assicurati di aver configurato il tuo ambiente e selezionato un' estensione.
Esegui il comando extension-info da qualsiasi posizione del computer:
firebase ext:info publisher-id/extension-id
Gli argomenti
publisher-id
eextension-id
sono obbligatori e sono disponibili nella pagina dei dettagli della preinstallazione dell'estensione.
Passaggio 2: installa un'estensione
Prima dell'installazione, esamina le specifiche di base dell'estensione (ad esempio API abilitate, risorse create, accesso concesso e così via) e i relativi requisiti di fatturazione.
Prima di continuare, assicurati di aver configurato l'ambiente e di aver selezionato un'estensione.
Inizializzare Cloud Functions for Firebase
Se stai iniziando un nuovo progetto o se il tuo progetto non utilizza già Cloud Functions per Firebase, esegui init functions
:
cd your-project
firebase init functions
Scegli TypeScript o JavaScript come linguaggio delle funzioni.
Se nel progetto sono già state inizializzate le funzioni Cloud, assicurati di utilizzare la versione 5.1.0 o successive del pacchetto firebase-functions
:
cd your-project/functions
npm upgrade --save firebase-functions
Se utilizzi ESLint, ti consigliamo di escludere anche gli SDK generati dalla configurazione (.eslintrc.js
):
ignorePatterns: [
"/generated/**/*", // Ignore generated files.
// ...
],
Generare un SDK di estensione
Dalla directory Firebase locale, esegui il comando ext:sdk:install
.
firebase ext:sdk:install publisher-id/extension-id@version
Ad esempio, per installare la versione 0.1.34 dell'estensione firestore-send-email
:
firebase ext:sdk:install firebase/firestore-send-email@0.1.34
publisher-id
e extension-id
sono obbligatori e sono disponibili nella pagina dei dettagli della preinstallazione dell'estensione su extensions.dev. La parte @version
è facoltativa; se la ometti, lo strumento installerà la versione più recente.
Puoi specificare due opzioni:
--force
: esegui tutte le seguenti operazioni senza ulteriore conferma:- Genera automaticamente l'SDK anche se ne è già stato generato uno per la stessa estensione e versione.
- Installa il pacchetto SDK generato automaticamente nel progetto Node di Cloud Functions.
--codebase
: il nome della base di codice a cui aggiungere l'SDK. Se non specificato, il comando aggiunge l'SDK al codice di base predefinito,functions
.
Questo comando crea un pacchetto Node contenente un SDK generato automaticamente per l'estensione e lo aggiunge a una delle basi di codice di Cloud Functions del progetto. Nel codice di base predefinito
(functions
), l'SDK viene salvato nella seguente posizione:
functions/generated/extensions/publisher-id/extension-id/version
Dopo aver generato l'SDK, il comando ti chiederà se vuoi installarlo anche nel progetto Node di Cloud Functions. Rispondi Sì a questa richiesta.
Configura le istanze dell'estensione
Per configurare l'estensione, importa l'SDK e, per ogni istanza dell'estensione che vuoi installare, chiama la funzione di costruttore, passando un ID istanza univoco del progetto e i parametri di configurazione richiesti dall'estensione.
Nel codice sorgente di Cloud Functions, importa il costruttore utilizzando l'istruzione stampata dal comando
ext:sdk:install
.TypeScript
Ad esempio, se hai generato un SDK per l'estensione
firestore-send-email
, la dichiarazioneimport
avrà il seguente aspetto:import { firestoreSendEmail } from "@firebase-extensions/firebase-firestore-send-email-sdk";
Se l'estensione richiede valori segreti come le password, hai bisogno anche della funzione
defineSecret
dell'SDK Cloud Functions:import { defineSecret } from "firebase-functions/params";
JavaScript
Ad esempio, se hai generato un SDK per l'estensione
firestore-send-email
, la dichiarazionerequire
avrà il seguente aspetto:const { firestoreSendEmail } = require("@firebase-extensions/firebase-firestore-send-email-sdk");
Se l'estensione richiede valori segreti come le password, hai bisogno anche della funzione
defineSecret
dell'SDK Cloud Functions:const { defineSecret } = require('firebase-functions/params');
Per ogni istanza da configurare, chiama la funzione del costruttore ed esporta il risultato.
Assegna a ogni istanza un ID univoco contenente solo lettere minuscole, numeri e trattini.
TypeScript
export const firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { SMTP_CONNECTION_URI: "smtps://username@example.com@smtp.example.com:465", SMTP_PASSWORD: defineSecret("SMTP_PASSWORD"), MAIL_COLLECTION: "mail", DEFAULT_FROM: "ExampleCo <username@example.com>", TTL_EXPIRE_VALUE: "1", TTL_EXPIRE_TYPE: "day", });
JavaScript
exports.firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { SMTP_CONNECTION_URI: "smtps://username@example.com@smtp.example.com:465", SMTP_PASSWORD: defineSecret("SMTP_PASSWORD"), MAIL_COLLECTION: "mail", DEFAULT_FROM: "ExampleCo <username@example.com>", TTL_EXPIRE_VALUE: "1", TTL_EXPIRE_TYPE: "day", });
Tieni presente che i valori dei secret devono essere specificati utilizzando la funzione
defineSecret
.Per eseguire il deployment delle estensioni configurate, esegui:
firebase deploy --only functions --project=projectId-or-alias
Si applicano tutte le opzioni di implementazione di Cloud Functions. Ad esempio, per eseguire il deployment di una singola istanza dell'estensione da un codebase specifico:
firebase deploy --only functions:codebase:extension-instance-id --project=projectId-or-alias
Passaggio 3: completa la configurazione post-installazione
Per alcune estensioni devi completare passaggi obbligatori o facoltativi prima di poterle utilizzare. Trova queste istruzioni nella pagina dei dettagli post-installazione dell'estensione nella dashboard di Extensions della console Firebase (il link specifico alla dashboard viene visualizzato nel terminale dopo l'installazione).
Puoi trovare queste istruzioni anche nel file POSTINSTALL.md
incluso nella directory di origine dell'estensione.
Creare risorse Firebase
Se hai configurato l'estensione in modo che utilizzi risorse Firebase (Cloud Firestorecollezioni, Realtime Databasepercorsi, Cloud Storagebucket) che non esistono già, creale prima di utilizzare l'estensione.
Crea gestori di eventi Eventarc
Alcune estensioni pubblicano in Eventarc quando si verificano eventi importanti durante l'esecuzione. Se un'estensione pubblica eventi, puoi scrivere funzioni che reagiscono a questi eventi con la tua logica personalizzata. Questo può essere utile, ad esempio, per informare gli utenti al termine di attività che richiedono molto tempo o per eseguire il post-trattamento dell'output di una funzione di estensione.
Se vuoi definire gestori per uno degli eventi emessi dall'estensione, puoi farlo utilizzando i metodi di attivazione di ogni istanza:
TypeScript
export const firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { /* ... */ });
export const emailErrorHandler = firestoreSendEmail_1.onError((event) => {
// Handle mail errors.
});
JavaScript
exports.firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { /* ... */ });
exports.emailErrorHandler = exports.firestoreSendEmail_1.onError((event) => {
// Handle mail errors.
});
Devi esportare il gestore eventi insieme all'istanza dell'estensione.
Dopo aver definito un gestore eventi e ogni volta che apporti modifiche a uno, esegui il redeployment sia dell'estensione sia del gestore.
Installare più istanze di estensioni
Puoi installare la stessa estensione più di una volta nello stesso progetto. Ogni istanza installata può avere la propria configurazione personalizzata e le proprie risorse di estensione. Identifica e fai riferimento a ogni istanza installata utilizzando il suo ID istanza, che è univoco all'interno del progetto.
Chiama la funzione di costruttore dell'SDK generato automaticamente una volta per ogni istanza che vuoi installare e configurare.
Passaggi successivi
Visualizza i dettagli e la configurazione della tua estensione installata nella console Firebase.
Monitora l'attività dell'estensione installata, inclusi i controlli relativi a integrità, utilizzo e log.
Utilizza la console Firebase per gestire l'estensione installata. Per le estensioni ufficiali Firebase, puoi riconfigurare o disinstallare l'estensione, nonché aggiornarla all'ultima versione.
Come best practice per tutti i progetti, assicurati di configurare gli avvisi sul budget per il tuo progetto e di monitorare la dashboard Utilizzo e fatturazione nella console Firebase.