Avant de connecter votre application à l'émulateur Cloud Storage for Firebase, assurez-vous de comprendre le workflow global Firebase Local Emulator Suite, d'installer et de configurer Local Emulator Suite, et de consulter ses commandes CLI.
Choisir un projet Firebase
Firebase Local Emulator Suite émule les produits pour un seul projet Firebase.
Pour sélectionner le projet à utiliser, avant de démarrer les émulateurs, exécutez firebase use
dans votre répertoire de travail dans la CLI. Vous pouvez également transmettre l'option --project
à chaque commande d'émulateur.
Local Emulator Suite est compatible avec l'émulation des projets Firebase réels et des projets de démonstration.
Type de projet | Fonctionnalités | Utiliser avec des émulateurs |
---|---|---|
Situation réelle |
Un projet Firebase réel est un projet que vous avez créé et configuré (très probablement via la console Firebase). Les projets réels disposent de ressources en direct, comme des instances de base de données, des buckets de stockage, des fonctions ou toute autre ressource que vous configurez pour ce projet Firebase. |
Lorsque vous travaillez avec de vrais projets Firebase, vous pouvez exécuter des émulateurs pour tout ou partie des produits compatibles. Pour tous les produits que vous n'émulez pas, vos applications et votre code interagissent avec la ressource live (instance de base de données, bucket de stockage, fonction, etc.). |
Démonstration |
Un projet de démonstration Firebase ne comporte aucune configuration Firebase réelle ni aucune ressource en direct. Ces projets sont généralement accessibles via des ateliers de programmation ou d'autres tutoriels. Les ID de projet de démonstration sont précédés du préfixe |
Lorsque vous utilisez des projets de démonstration Firebase, vos applications et votre code interagissent uniquement avec des émulateurs. Si votre application tente d'interagir avec une ressource pour laquelle aucun émulateur n'est en cours d'exécution, ce code échouera. |
Nous vous recommandons d'utiliser des projets de démonstration dans la mesure du possible. Voici quelques-uns de ses avantages :
- Configuration plus facile, car vous pouvez exécuter les émulateurs sans jamais créer de projet Firebase
- Sécurité renforcée : si votre code appelle accidentellement des ressources non émulées (de production), il n'y a aucun risque de modification des données, d'utilisation et de facturation.
- Meilleure compatibilité hors connexion, car vous n'avez pas besoin d'accéder à Internet pour télécharger la configuration de votre SDK.
Instrumenter votre application pour qu'elle communique avec les émulateurs
SDK Android, Apple et Web
Configurez vos classes de configuration ou de test dans l'application pour interagir avec l'émulateur Cloud Storage for Firebase comme suit.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Aucune configuration supplémentaire n'est requise pour tester les fonctions Cloud déclenchées par des événements Cloud Storage for Firebase à l'aide de l'émulateur. Lorsque les émulateurs Cloud Storage for Firebase et Cloud Functions sont tous les deux en cours d'exécution, ils fonctionnent automatiquement ensemble.
Admin SDK s
Les Firebase Admin SDK se connectent automatiquement à l'émulateur Cloud Storage for Firebase lorsque la variable d'environnement FIREBASE_STORAGE_EMULATOR_HOST
est définie :
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Notez que l'émulateur Cloud Functions est automatiquement au courant de l'existence de l'émulateur Cloud Storage for Firebase. Vous pouvez donc ignorer cette étape lorsque vous testez des intégrations entre les émulateurs Cloud Functions et Cloud Storage for Firebase. La variable d'environnement sera automatiquement définie pour le SDK Admin dans Cloud Storage for Firebase.
Si vous souhaitez que votre code Admin SDK se connecte à un émulateur partagé s'exécutant dans un autre environnement, vous devrez spécifier le même ID de projet que celui que vous avez défini à l'aide de la CLI Firebase.
Vous pouvez transmettre un ID de projet à initializeApp
directement ou définir la variable d'environnement GCLOUD_PROJECT
.
SDK Admin Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variable d'environnement
export GCLOUD_PROJECT="your-project-id"
Importer et exporter des données
Les émulateurs de base de données et Cloud Storage for Firebase vous permettent d'exporter des données à partir d'une instance d'émulateur en cours d'exécution. Définissez un ensemble de données de référence à utiliser dans vos tests unitaires ou vos workflows d'intégration continue, puis exportez-le pour le partager avec l'équipe.
firebase emulators:export ./dir
Lors des tests, importez les données de référence au démarrage de l'émulateur.
firebase emulators:start --import=./dir
Vous pouvez demander à l'émulateur d'exporter les données à l'arrêt, en spécifiant un chemin d'exportation ou en utilisant simplement le chemin transmis à l'indicateur --import
.
firebase emulators:start --import=./dir --export-on-exit
Ces options d'importation et d'exportation de données fonctionnent également avec la commande firebase emulators:exec
. Pour en savoir plus, consultez la documentation de référence sur les commandes de l'émulateur.
Différences entre l'émulateur Cloud Storage for Firebase et la production
Pour tester les applications clientes, l'émulateur Cloud Storage for Firebase s'aligne presque parfaitement sur la production en ce qui concerne la surface de l'API Firebase. Tous les commandes Firebase sont censées fonctionner entre les SDK Firebase standards (plates-formes Web, Android et Apple).
Des limites existent pour les tests d'applications côté serveur. Les SDK Admin Firebase utilisent la surface de l'API Google Cloud, et tous les points de terminaison de cette API ne sont pas émulés. En règle générale, tout ce qui peut être fait à partir des SDK client (importer ou supprimer des fichiers, obtenir et définir des métadonnées) est également implémenté pour une utilisation à partir des SDK Admin, mais tout ce qui va au-delà ne l'est pas. Vous trouverez ci-dessous les exclusions notables.
Différences par rapport à Google Cloud Storage
Le produit Cloud Storage for Firebase, y compris l'émulateur Storage, fournit un sous-ensemble de fonctionnalités Google Cloud Storage (GCS) axées sur les objets de stockage, ce qui est très utile pour développer des applications Firebase. Cloud Storage for Firebase diffère de GCS de plusieurs façons :
- Cloud Storage for Firebase n'est actuellement pas compatible avec les API
Bucket
permettant de créer, lister, obtenir ou supprimer des buckets de stockage. - Les méthodes suivantes sont compatibles avec l'API Google Cloud Storage Objects :
copy
,delete
,get
,insert
,list
,patch
,rewrite
etupdate
.
Cloud IAM
La suite d'émulateurs Firebase ne tente pas de répliquer ni de respecter les comportements liés à IAM pour l'exécution. Les émulateurs respectent les règles de sécurité Firebase fournies. Toutefois, dans les situations où IAM serait normalement utilisé (par exemple, pour définir le compte de service d'appel Cloud Functions et donc les autorisations), l'émulateur n'est pas configurable et utilisera le compte disponible à l'échelle mondiale sur votre machine de développement, comme lors de l'exécution directe d'un script local.
Notifications Pub/Sub
L'émulateur Cloud Storage for Firebase ne s'intègre pas à l'émulateur Pub/Sub Cloud et n'est donc pas compatible avec la création de canaux/notifications pour les modifications apportées aux objets de stockage. Nous vous recommandons d'utiliser directement les déclencheurs Cloud Functions Storage.
Métadonnées au niveau du bucket
L'émulateur Cloud Storage for Firebase n'est compatible avec aucune configuration au niveau du bucket, y compris la classe de stockage, la configuration CORS au niveau du bucket, les libellés ou les règles de conservation. Firebase prévoit d'améliorer cette compatibilité au fil du temps.
Et maintenant ?
- Pour découvrir un ensemble organisé de vidéos et d'exemples détaillés, consultez la playlist de formation sur les émulateurs Firebase.
- Étant donné que les fonctions déclenchées sont une intégration typique à Cloud Storage for Firebase, découvrez l'émulateur Cloud Functions for Firebase sur la page Exécuter des fonctions localement.