É possível instalar (e gerenciar) qualquer uma das extensões oficiais do Firebase usando o console Firebase, a CLI do Firebase (interface de linha de comando) ou um SDK gerado automaticamente.
Analise as diferenças nas ações compatíveis com cada método de instalação.
A instalação usando um SDK gerado automaticamente é uma nova opção para instalar e gerenciar extensões. Com essa opção, você usa a CLI para gerar automaticamente um SDK do Node para uma versão específica da extensão, que pode ser importada como uma dependência comum nas suas funções do Cloud em JavaScript ou TypeScript.
Esse SDK gerado automaticamente contém:
- Uma interface que representa os parâmetros da extensão e declarações de tipo para a maioria dos tipos de parâmetros não primitivos.
- Uma função de construtor que inicializa uma instância da extensão
- Uma classe de extensão que contém acionadores do Eventarc para todos os eventos emitidos pela extensão.
Depois de gerar um SDK de extensão, toda a configuração da extensão acontece no código.
O uso dessa opção de instalação pode simplificar muito o gerenciamento de várias instâncias de extensão, principalmente em projetos que contêm funções do Cloud definidas fora das extensões.
Para instalar ou gerenciar extensões, é necessário atribuir um destes papéis: Proprietário ou Editor ou Administrador do Firebase.
Para instalar uma extensão, o projeto precisa estar no plano Blaze (pagamento por utilização). A instalação de uma extensão é feita sem custos financeiros, mas você poderá receber cobranças pelo uso de serviços do Firebase ou do Cloud, como o Cloud Secret Manager, se o uso exceder o Nível sem custos financeiros dos serviços.
Antes de começar
Adicione o Firebase ao seu projeto, caso ainda não tenha feito isso.
Faça upgrade do seu projeto para o plano Blaze (pagamento por utilização), se ainda não tiver feito isso.
Instale ou atualize para a versão mais recente da CLI Firebase.
Anote o ID do projeto do Firebase ou o alias do projeto configurado anteriormente.
- ID do projeto: execute
firebase projects:list
de qualquer lugar no computador. - Alias do projeto: execute
firebase use
no diretório local de apps.
- ID do projeto: execute
Etapa 1: visualizar informações detalhadas sobre uma extensão
Esta etapa é opcional, mas altamente recomendada.
Antes de instalar um Firebase Extension, recomendamos que você leia informações detalhadas sobre a extensão, incluindo:
- Como a extensão funciona, as tarefas de pré-instalação e os detalhes sobre ela
- Informações gerais de identificação e descrição
- Se as tarefas da extensão exigem uma conta de faturamento
- Serviços do Google (APIs) e papéis de acesso necessários para operação
- Recursos criados para a extensão (como funções)
- Descrições de parâmetros configuráveis pelo usuário
Para visualizar as informações detalhadas de uma extensão:
Verifique se você configurou seu ambiente e selecionou uma extensão.
Execute o comando extension-info em qualquer lugar no seu computador:
firebase ext:info publisher-id/extension-id
Os argumentos
publisher-id
eextension-id
são obrigatórios e podem ser encontrados na página de detalhes da pré-instalação da extensão.
Etapa 2: instalar uma extensão
Antes da instalação, analise as especificações básicas da extensão (como APIs ativadas, recursos criados, acesso concedido etc.) e os requisitos de faturamento.
Antes de continuar, verifique se você configurou seu ambiente e selecionou uma extensão.
Inicializar o Cloud Functions para Firebase
Se você estiver iniciando um novo projeto ou se ele ainda não usa o Cloud Functions para Firebase, execute init functions
:
cd your-project
firebase init functions
Escolha TypeScript ou JavaScript como a linguagem das funções.
Se o projeto já tiver o Cloud Functions inicializado, verifique se você está usando
a versão 5.1.0 ou mais recente do pacote firebase-functions
:
cd your-project/functions
npm upgrade --save firebase-functions
Se você usa o ESLint, também é possível excluir os SDKs gerados da
configuração (.eslintrc.js
):
ignorePatterns: [
"/generated/**/*", // Ignore generated files.
// ...
],
Gerar um SDK de extensão
No diretório local do Firebase, execute o comando ext:sdk:install
.
firebase ext:sdk:install publisher-id/extension-id@version
Por exemplo, para instalar a versão 0.1.34 da extensão firestore-send-email
:
firebase ext:sdk:install firebase/firestore-send-email@0.1.34
Os argumentos publisher-id
e extension-id
são obrigatórios e podem ser encontrados na página de detalhes de pré-instalação da extensão em
extensions.dev.
A parte @version
é opcional. Se você omiti-la, a
ferramenta vai instalar a versão mais recente.
Há duas opções que você pode especificar:
--force
: faça o seguinte sem mais confirmações:- Gere automaticamente o SDK, mesmo que um já tenha sido gerado para a mesma extensão e versão.
- Instale o pacote do SDK gerado automaticamente no projeto do Node do Cloud Functions.
--codebase
: o nome da base de código para adicionar o SDK. Se não for especificado, o comando vai adicionar o SDK à base de código padrão,functions
.
Esse comando cria um pacote do Node que contém um SDK gerado automaticamente
para a extensão e o adiciona a uma das
bases de código do Cloud Functions do projeto. Na base de código padrão
(functions
), o SDK é salvo no seguinte local:
functions/generated/extensions/publisher-id/extension-id/version
Depois de gerar o SDK, o comando vai perguntar se você também quer instalar o SDK no seu projeto do Node para a API Cloud Functions. Responda Sim a esse comando.
Configurar instâncias de extensão
Para configurar a extensão, importe o SDK e, para cada instância de extensão que você quer instalar, chame a função do construtor, transmitindo um ID de instância exclusivo do projeto e os parâmetros de configuração exigidos pela extensão.
Na origem do Cloud Functions, importe o construtor usando a instrução gerada pelo comando
ext:sdk:install
.TypeScript
Por exemplo, se você gerou um SDK para a extensão
firestore-send-email
, a instruçãoimport
vai ser semelhante a esta:import { firestoreSendEmail } from "@firebase-extensions/firebase-firestore-send-email-sdk";
Se a extensão exigir valores de secrets, como senhas, você também vai precisar da função
defineSecret
do SDK do Cloud Functions:import { defineSecret } from "firebase-functions/params";
JavaScript
Por exemplo, se você gerou um SDK para a extensão
firestore-send-email
, a instruçãorequire
vai ser semelhante a esta:const { firestoreSendEmail } = require("@firebase-extensions/firebase-firestore-send-email-sdk");
Se a extensão exigir valores de secrets, como senhas, você também vai precisar da função
defineSecret
do SDK do Cloud Functions:const { defineSecret } = require('firebase-functions/params');
Para cada instância que você quer configurar, chame a função do construtor e exporte o resultado.
Dê a cada instância um ID exclusivo, contendo apenas letras minúsculas, números e hifens.
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", });
Os valores secretos precisam ser especificados usando a função
defineSecret
.Em seguida, para implantar as extensões configuradas, execute:
firebase deploy --only functions --project=projectId-or-alias
Todas as opções usuais de implantação do Cloud Functions se aplicam. Por exemplo, para implantar uma única instância de extensão de uma base de código específica:
firebase deploy --only functions:codebase:extension-instance-id --project=projectId-or-alias
Etapa 3: concluir a configuração pós-instalação
Algumas extensões têm etapas obrigatórias ou opcionais para você concluir antes de usá-las. Encontre essas instruções na página de detalhes de pós-instalação da extensão no painel "Extensions" do Console do Firebase (o link específico para o painel é exibido no terminal após a instalação).
Essas instruções também podem ser encontradas no arquivo POSTINSTALL.md
incluído no
diretório de origem da extensão.
Criar recursos do Firebase
Se você configurou a extensão para usar recursos do Firebase (coleções do Cloud Firestore, caminhos do Realtime Database e buckets do Cloud Storage) que ainda não existem, crie-os antes de usar a extensão.
Criar manipuladores de eventos do Eventarc
Algumas extensões são publicadas no Eventarc quando eventos importantes acontecem durante a execução. Se uma extensão publicar eventos, você poderá escrever funções que reagem a esses eventos com sua própria lógica personalizada. Isso pode ser útil, por exemplo, para notificar os usuários quando tarefas de longa duração forem concluídas ou para pós-processar a saída de uma função de extensão.
Se você quiser definir gerenciadores para qualquer um dos eventos emitidos pela extensão, faça isso usando os métodos de acionamento de cada instância:
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.
});
Você precisa exportar o manipulador de eventos com a instância da extensão.
Depois de definir um manipulador de eventos e sempre que fizer mudanças nele, reimplante a extensão e o gerenciador.
Instalar várias instâncias de extensões
É possível instalar a mesma extensão mais de uma vez no mesmo projeto. Cada instância instalada pode ter sua própria configuração personalizada e recursos de extensão. Identifique e faça referência a cada instância instalada usando o ID da instância exclusivo do projeto.
Chame a função de construtor do SDK gerado automaticamente uma vez para cada instância que você quer instalar e configurar.
Próximas etapas
Veja os detalhes e a configuração da extensão instalada no Console do Firebase.
Monitore a atividade da extensão instalada, incluindo verificações de integridade, uso e registros.
Usando o Console do Firebase, gerencie sua extensão instalada. Para extensões oficiais do Firebase, é possível reconfigurar ou desinstalar sua extensão, além de atualizá-la para a versão mais recente.
Como prática recomendada para todos os projetos, configure alertas de orçamento para seu projeto e monitore o Painel de uso e faturamento no Console do Firebase.