Conecte su aplicación al Cloud Storage para Firebase Emulator

Antes de conectar su aplicación al emulador Cloud Storage para Firebase, asegúrese de comprender el flujo de trabajo general de Firebase Local Emulator Suite , de instalar y configurar Local Emulator Suite y de revisar sus comandos CLI .

Elige un proyecto de Firebase

Firebase Local Emulator Suite emula productos para un único proyecto de Firebase.

Para seleccionar el proyecto a usar, antes de iniciar los emuladores, en la CLI ejecute firebase use en su directorio de trabajo. O puede pasar el indicador --project a cada comando del emulador.

Local Emulator Suite admite la emulación de proyectos reales de Firebase y proyectos de demostración .

Tipo de proyecto Características Usar con emuladores
Real

Un proyecto real de Firebase es uno que usted creó y configuró (muy probablemente a través de la consola de Firebase).

Los proyectos reales tienen recursos activos, como instancias de bases de datos, depósitos de almacenamiento, funciones o cualquier otro recurso que configure para ese proyecto de Firebase.

Cuando trabajas con proyectos reales de Firebase, puedes ejecutar emuladores para cualquiera o todos los productos compatibles.

Para cualquier producto que no esté emulando, sus aplicaciones y código interactuarán con el recurso activo (instancia de base de datos, depósito de almacenamiento, función, etc.).

Manifestación

Un proyecto de demostración de Firebase no tiene una configuración real de Firebase ni recursos activos. Por lo general, se accede a estos proyectos a través de codelabs u otros tutoriales.

Los ID de proyecto para proyectos de demostración tienen el prefijo demo- .

Cuando trabajas con proyectos de demostración de Firebase, tus aplicaciones y código interactúan solo con emuladores. Si su aplicación intenta interactuar con un recurso para el cual no se está ejecutando un emulador, ese código fallará.

Le recomendamos que utilice proyectos de demostración siempre que sea posible. Beneficios incluidos:

  • Configuración más sencilla, ya que puedes ejecutar los emuladores sin tener que crear un proyecto de Firebase.
  • Mayor seguridad, ya que si su código invoca accidentalmente recursos (de producción) no emulados, no hay posibilidad de cambio de datos, uso y facturación.
  • Mejor soporte fuera de línea, ya que no es necesario acceder a Internet para descargar la configuración del SDK.

Instrumenta tu aplicación para hablar con los emuladores

Plataformas Android, Apple y SDK web

Configure su configuración en la aplicación o clases de prueba para interactuar con el emulador de Cloud Storage para Firebase de la siguiente manera.

Kotlin+KTX
// 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);
Rápido
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web modular API

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 namespaced API

var storage = firebase.storage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  storage.useEmulator("127.0.0.1", 9199);
} 

No se necesita configuración adicional para probar las funciones de la nube activadas por los eventos de Cloud Storage para Firebase usando el emulador. Cuando los emuladores de Cloud Storage para Firebase y Cloud Functions se están ejecutando, funcionan juntos automáticamente.

SDK de administrador

Los SDK de Firebase Admin se conectan automáticamente al emulador de Cloud Storage para Firebase cuando se configura la variable de entorno FIREBASE_STORAGE_EMULATOR_HOST :

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

Tenga en cuenta que el emulador de Cloud Functions reconoce automáticamente el emulador de Cloud Storage para Firebase, por lo que puede omitir este paso al probar integraciones entre Cloud Functions y los emuladores de Cloud Storage para Firebase. La variable de entorno se configurará automáticamente para el SDK de administración en Cloud Storage para Firebase.

Si desea que su código Admin SDK se conecte a un emulador compartido que se ejecuta en otro entorno, deberá especificar el mismo ID de proyecto que configuró mediante Firebase CLI . Puede pasar un ID de proyecto para initializeApp directamente o configurar la variable de entorno GCLOUD_PROJECT .

SDK de administración de Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variable ambiental
export GCLOUD_PROJECT="your-project-id"

Importar y exportar datos

La base de datos y los emuladores de Cloud Storage para Firebase te permiten exportar datos desde una instancia de emulador en ejecución. Defina un conjunto de datos de referencia para usar en sus pruebas unitarias o flujos de trabajo de integración continua, luego expórtelo para compartirlo con el equipo.

firebase emulators:export ./dir

En las pruebas, al iniciar el emulador, importe los datos de referencia.

firebase emulators:start --import=./dir

Puede indicarle al emulador que exporte datos al apagarlo, ya sea especificando una ruta de exportación o simplemente usando la ruta pasada al indicador --import .

firebase emulators:start --import=./dir --export-on-exit

Estas opciones de importación y exportación de datos también funcionan con el comando firebase emulators:exec . Para obtener más información, consulte la referencia de comandos del emulador .

En qué se diferencia el emulador de Cloud Storage para Firebase de la producción

Para probar aplicaciones cliente, el emulador Cloud Storage para Firebase se alinea con la producción casi perfectamente en lo que respecta al área de superficie de la API de Firebase. Se espera que todos los comandos de Firebase funcionen entre los SDK de Firebase habituales (plataformas Web, Android y Apple).

Existen limitaciones para probar aplicaciones del lado del servidor. Los SDK de Firebase Admin utilizan la superficie de la API de Google Cloud y no se emulan todos los puntos finales de esta API. Como regla general, todo lo que se puede hacer desde los SDK del cliente (cargar o eliminar archivos, obtener y configurar metadatos) también se implementa para su uso desde los SDK de administración, pero nada más allá de eso no. Las exclusiones notables se enumeran a continuación.

Diferencias con el almacenamiento en la nube de Google

El producto Cloud Storage para Firebase, incluido el emulador de Storage, proporciona un subconjunto de funciones de Google Cloud Storage (GCS) que se centra en objetos de almacenamiento y que es muy útil para desarrollar aplicaciones de Firebase. Cloud Storage para Firebase se diferencia de GCS en los siguientes aspectos:

  • Actualmente, Cloud Storage for Firebase no admite API Bucket para crear, enumerar, obtener o eliminar depósitos de almacenamiento.
  • Desde la API de objetos de Google Cloud Storage , se admiten los siguientes métodos: copy , delete , get , insert , list , patch , rewrite , update .

Gestión de identidades y accesos en la nube

Firebase Emulator Suite no intenta replicar ni respetar ningún comportamiento relacionado con IAM para su ejecución. Los emuladores cumplen con las reglas de seguridad de Firebase proporcionadas, pero en situaciones en las que normalmente se usaría IAM, por ejemplo, para configurar Cloud Functions que invocan la cuenta de servicio y, por lo tanto, los permisos, el emulador no es configurable y usará la cuenta disponible globalmente en su máquina de desarrollador. similar a ejecutar un script local directamente.

Notificaciones de publicación/sub

El emulador de Cloud Storage para Firebase no se integra con el emulador de Cloud Pub/Sub y, por lo tanto, no admite la creación de canales/notificaciones para cambios de objetos de almacenamiento. Recomendamos utilizar activadores de Cloud Functions Storage directamente.

Metadatos a nivel de depósito

El emulador de Cloud Storage para Firebase no admite ninguna configuración a nivel de depósito, incluida la clase de almacenamiento, la configuración CORS a nivel de depósito, las etiquetas o las políticas de retención. Firebase tiene la intención de mejorar este soporte con el tiempo.

¿Qué sigue?