Configuração do ambiente

Muitas vezes, você precisará de configuração adicional para suas funções, como chaves de API de terceiros ou configurações ajustáveis. O SDK do Firebase para Cloud Functions oferece configuração de ambiente integrada para facilitar o armazenamento e a recuperação desses tipos de dados para seu projeto.

Definir a configuração do ambiente para o seu projeto

Use o comando firebase functions:config:set na Firebase CLI para armazenar dados do ambiente. Cada chave pode receber um namespace com pontos para agrupar configurações relacionadas. Lembre-se de que somente caracteres minúsculos são aceitos nas chaves. Não são permitidos caracteres maiúsculos.

Por exemplo, para armazenar o ID do cliente e a chave de API para "Some Service", você pode executar:

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

Recuperar a configuração atual do ambiente

Para verificar o que está armazenado na configuração do ambiente do seu projeto, você pode usar firebase functions:config:get. Isso enviará ao JSON linhas com a seguinte aparência:

{
  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"
  }
}

Essa funcionalidade é baseada na Google Cloud Runtime Configuration API.

Acessar a configuração do ambiente em uma função

Algumas configurações são fornecidas automaticamente no namespace firebase reservado. A configuração do ambiente está disponível na sua função por meio do functions.config(). Para usar a configuração acima, seu código deve ter a seguinte aparência:

const functions = require('firebase-functions');
const request = require('request-promise');

exports.userCreated = functions.database.ref('/users/{id}').onWrite(event => {
  let email = event.data.child('email').val();

  return request({
    url: 'https://someservice.com/api/some/call',
    headers: {
      'X-Client-ID': functions.config().someservice.id,
      'Authorization': `Bearer ${functions.config().someservice.key}`
    },
    body: {email: email}
  });
});

Usar configuração do ambiente para inicializar um módulo

Alguns módulos de node estão prontos sem qualquer configuração. Outros módulos precisam de configuração extra para serem inicializados corretamente. Recomendamos que você armazene essa configuração em variáveis de configuração do ambiente, em vez de codificá-la. Isso ajuda você a manter a disponibilidade do seu código, o que permite abrir o código-fonte do seu aplicativo ou alternar facilmente as versões de produção e teste.

Por exemplo, para usar o módulo Slack Node SDK, convém escrever:

const functions = require('firebase-functions');
const IncomingWebhook = require('@slack/client').IncomingWebhook;
const webhook = new IncomingWebhook(functions.config().slack.url);

Antes da implantação, defina a variável de configuração do ambiente slack.url:

firebase functions:config:set slack.url=https://hooks.slack.com/services/XXX

Comandos de ambiente adicionais

  • O comando firebase functions:config:unset key1 key2 remove as chaves especificadas da configuração.
  • O comando firebase functions:config:clone --from <fromProject> clona o ambiente de um projeto para outro que esteja ativo no momento.

Variáveis ​​de ambiente preenchidas automaticamente

Existem variáveis ​​de ambiente que são automaticamente preenchidas no tempo de execução das funções e nas funções emuladas localmente, incluindo:

process.env.GCLOUD_PROJECT: fornece o código do projeto do Firebase

process.env.FIREBASE_CONFIG: fornece as seguintes informações de configuração do projeto do Firebase:

{
  databaseURL: 'https://databaseName.firebaseio.com',
  storageBucket: 'projectId.appspot.com',
  projectId: 'projectId'
}

Essa configuração é aplicada automaticamente quando você inicializa o SDK Admin do Firebase sem argumentos. Se você estiver escrevendo funções em JavaScript, inicialize deste modo:

const admin = require('firebase-admin');
admin.initializeApp();

Se você estiver escrevendo funções no TypeScript, inicialize deste modo:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import 'firebase-functions';
admin.initializeApp();

Se você precisar inicializar o SDK Admin com a configuração do projeto padrão usando as credenciais da conta de serviço, poderá carregar as credenciais de um arquivo e adicioná-las ao FIREBASE_CONFIG da seguinte maneira:

serviceAccount = require('./serviceAccount.json');

const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.