Catch up on everthing we announced at this year's Firebase Summit. Learn more

Conecte su aplicación al emulador de almacenamiento en la nube

Antes de conectar la aplicación en el emulador Cloud Storage, asegúrese de que entiende el flujo de trabajo general Firebase local emulador suite , y que instalar y configurar el emulador suite local y revisar sus comandos de la CLI .

Elige un proyecto de Firebase

Firebase Local Emulator Suite emula productos para un solo proyecto de Firebase.

Para seleccionar el proyecto para su uso, antes de empezar los emuladores, en el plazo de CLI firebase use en su directorio de trabajo. O bien, puede pasar el --project bandera para cada comando emulador.

Local emulador Suite es compatible con la emulación de los proyectos de demostración base de fuego reales y proyectos.

Tipo de proyecto Características Usar con emuladores
Verdadero

Un proyecto de Firebase real es uno que creaste y configuraste (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.

Al trabajar con proyectos reales de Firebase, puede 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 directo (instancia de base de datos, un cubo de almacenamiento, función, etc.).

Manifestación

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

Proyecto ID para proyectos de demostración tienen la demo- prefijo.

Cuando se trabaja con proyectos de demostración de base de fuego, sus aplicaciones e interactuar código con sólo emuladores. Si su aplicación intenta interactuar con un recurso para el que 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 puede ejecutar los emuladores sin tener que crear un proyecto de Firebase
  • Mayor seguridad, ya que si su código invoca accidentalmente recursos no emulados (producción), no hay posibilidad de cambio de datos, uso y facturación.
  • Mejor soporte sin conexión, ya que no es necesario acceder a Internet para descargar la configuración de su SDK.

Instrumenta tu aplicación para hablar con los emuladores

Android, plataformas Apple y Web SDK

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

Androide
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
Rápido
Storage.storage().useEmulator(withHost:"localhost", port:9199)
Web v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
Web v9
import { getStorage, connectStorageEmulator } from "firebase/storage";

const storage = getStorage();
connectStorageEmulator(storage, "localhost", 9199);

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

SDK de administrador

El administrador SDK base de fuego se conecte automáticamente al emulador de almacenamiento en la nube cuando el FIREBASE_STORAGE_EMULATOR_HOST se establece la variable de entorno:

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

Tenga en cuenta que el emulador de Cloud Functions reconoce automáticamente el emulador de Cloud Storage, por lo que puede omitir este paso cuando pruebe integraciones entre los emuladores de Cloud Functions y Cloud Storage. La variable de entorno se configurará automáticamente para Admin SDK en Cloud Storage.

Cuando te conectes al emulador de Cloud Storage desde cualquier otro entorno, deberás especificar un ID de proyecto. Se puede pasar un identificador de proyecto para initializeApp directa o establecer el GCLOUD_PROJECT variable de entorno. Tenga en cuenta que no es necesario que utilice su ID de proyecto de Firebase real; el emulador de almacenamiento en la nube aceptará ninguna identificación del proyecto, siempre y cuando se tiene un formato válido .

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

Importar y exportar datos

Los emuladores de base de datos y Cloud Storage 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

Se puede indicar al emulador para exportar datos al cerrar el sistema, o bien especificar una ruta de exportación o simplemente utilizando la ruta pasa a la --import bandera.

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

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

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

Para probar las aplicaciones cliente, el emulador de Cloud Storage se alinea con la producción casi a la perfección con respecto al área de superficie de la API de Firebase. Se espera que todos los comandos de Firebase funcionen entre los SDK de Firebase normales (plataformas Web, Android y Apple).

Para las pruebas de aplicaciones del lado del servidor, existen limitaciones. Los SDK de Firebase Admin utilizan la superficie de la API de Google Cloud y no se emulan todos los extremos 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 Admin, pero cualquier cosa más allá de eso no lo es. Las exclusiones notables se enumeran a continuación.

Cloud IAM

Firebase Emulator Suite no intenta replicar ni respetar ningún comportamiento de ejecución relacionado con IAM. Los emuladores se adhieren a las reglas de seguridad de Firebase proporcionadas, pero en situaciones en las que normalmente se usaría IAM, por ejemplo, para configurar Cloud Functions invocando 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 Pub / Sub

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

Metadatos a nivel de depósito

El emulador de Cloud Storage no admite ninguna configuración a nivel de depósito, incluida la clase de almacenamiento, la configuración de 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?