Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Configuration de l'environnement

Vous aurez souvent besoin d'une configuration supplémentaire pour vos fonctions, telles que des clés API tierces ou des paramètres réglables. Le SDK Firebase pour Cloud Functions offre une configuration d'environnement intégrée pour faciliter le stockage et la récupération de ce type de données pour votre projet.

Définir la configuration de l'environnement pour votre projet

Pour stocker les données d'environnement, vous pouvez utiliser les firebase functions:config:set Firebase firebase functions:config:set commande firebase functions:config:set dans Firebase CLI . Chaque clé peut être nommée à l'aide de points pour regrouper la configuration associée. Gardez à l'esprit que seuls les caractères minuscules sont acceptés dans les clés ; les caractères majuscules ne sont pas autorisés.

Par exemple, pour stocker l'ID client et la clé API de "Some Service", vous pouvez exécuter:

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

Récupérer la configuration actuelle de l'environnement

Pour inspecter ce qui est actuellement stocké dans la configuration de l'environnement pour votre projet, vous pouvez utiliser les firebase functions:config:get . Il produira quelque chose de JSON comme ceci:

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

Cette fonctionnalité est basée sur l' API de configuration de Google Cloud Runtime .

Accéder à la configuration de l'environnement dans une fonction

Certaines configurations sont automatiquement fournies sous l'espace de noms firebase réservé. La configuration de l'environnement est rendue disponible dans votre fonction en cours d'exécution via functions.config() . Pour utiliser la configuration ci-dessus, votre code peut ressembler à ceci:

 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}
  });
});
 

Utiliser la configuration de l'environnement pour initialiser un module

Certains modules Node sont prêts sans aucune configuration. D'autres modules nécessitent une configuration supplémentaire pour s'initialiser correctement. Nous vous recommandons de stocker cette configuration dans des variables de configuration d'environnement plutôt que de la coder en dur. Cela vous permet de garder votre code beaucoup plus portable, ce qui vous permet d'ouvrir votre application en source ouverte ou de basculer facilement entre les versions de production et de préparation.

Par exemple, pour utiliser le module SDK Slack Node , vous pouvez écrire ceci:

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

Avant le déploiement, définissez la variable de configuration d'environnement slack.url :

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

Commandes d'environnement supplémentaires

  • firebase functions:config:unset key1 key2 supprime les clés spécifiées de la configuration
  • firebase functions:config:clone --from <fromProject> clone l'environnement d'un autre projet dans le projet actuellement actif.

Variables d'environnement remplies automatiquement

Il existe des variables d'environnement qui sont automatiquement renseignées dans l'exécution des fonctions et dans les fonctions émulées localement, notamment:

process.env.GCLOUD_PROJECT : fournit l'ID du projet Firebase

process.env.FIREBASE_CONFIG : fournit les informations de configuration de projet Firebase suivantes:

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

Cette configuration est appliquée automatiquement lorsque vous initialisez le SDK Firebase Admin sans argument. Si vous écrivez des fonctions en JavaScript, initialisez comme ceci:

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

Si vous écrivez des fonctions dans TypeScript, initialisez comme ceci:

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

Si vous devez initialiser le SDK Admin avec la configuration de projet par défaut à l'aide des informations d'identification du compte de service, vous pouvez charger les informations d'identification à partir d'un fichier et les ajouter à FIREBASE_CONFIG comme ceci:

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

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