Ir a la consola

Primeros pasos en la Web

Con Cloud Storage para Firebase puedes subir y compartir contenido generado por los usuarios, como imágenes y videos, lo que te permite integrar contenido de rich media en tus apps. Los datos se almacenan en un depósito de Google Cloud Storage, una solución de almacenamiento de objetos a escala de exabytes con alta disponibilidad y redundancia global. Cloud Storage te permite subir de forma segura estos archivos directamente desde dispositivos móviles y navegadores web, además de administrar las redes irregulares con facilidad.

Requisitos

Agrega el SDK de Firebase a la app y configúralo.

Crea un depósito predeterminado de Storage

  1. Desde el panel de navegación de Firebase console, selecciona Storage y, luego, haz clic en Comenzar.

  2. Revisa el mensaje sobre proteger tus datos de Storage con reglas de seguridad. Durante el desarrollo, te recomendamos que configures reglas para el acceso público.

  3. Selecciona una ubicación para el depósito predeterminado de Storage.

    • Esta configuración es la ubicación predeterminada de los recursos de Google Cloud Platform (GCP) del proyecto. Ten en cuenta que esta ubicación se usará para los servicios de GCP del proyecto que requieren una configuración de la ubicación. Específicamente, la base de datos de Cloud Firestore y la app de App Engine (que es obligatoria si usas Cloud Scheduler).

    • Si no puedes seleccionar una ubicación, el proyecto ya tiene una ubicación predeterminada para los recursos de GCP. Esta se definió durante la creación del proyecto o cuando configuraste otro servicio que requería una configuración de ubicación.

    Si estás en el plan Blaze, puedes crear varios depósitos, cada uno con su propia ubicación.

  4. Haz clic en Listo.

Configura el acceso público

Cloud Storage para Firebase proporciona un lenguaje de reglas declarativas que te permite definir cómo se deben estructurar los datos, cómo se deben indexar y cuándo se pueden leer y escribir. Según la configuración predeterminada, el acceso de lectura y escritura a Storage es restringido, por lo que solo los usuarios autenticados pueden leer o escribir datos. Para comenzar sin configurar Authentication, puedes definir tus reglas de acceso público.

Esto hace que Storage esté abierto para todo el mundo, incluso las personas que no usan tu app, así que asegúrate de volver a restringir Storage cuando configures la autenticación.

Agrega la URL del depósito a tu app

Si aún no está incluida, debes agregar la URL del depósito de Storage al objeto de configuración de la app de Firebase.

  1. Ve a tu panel de Storage en Firebase console.

  2. Haz clic en la pestaña Archivos y, luego, busca en el encabezado del visor de archivos.

  3. Copia la URL al portapapeles. Por lo general, tiene el formato project-id.appspot.com.

  4. Agrega el atributo storageBucket con la URL del depósito al objeto firebaseConfig de tu app de la siguiente manera:

      // Set the configuration for your app
      // TODO: Replace with your app's config object
      var firebaseConfig = {
        apiKey: '<your-api-key>',
        authDomain: '<your-auth-domain>',
        databaseURL: '<your-database-url>',
        storageBucket: '<your-storage-bucket-url>'
      };
      firebase.initializeApp(firebaseConfig);
    
      // Get a reference to the storage service, which is used to create references in your storage bucket
      var storage = firebase.storage();
    

Estás listo para comenzar a usar Cloud Storage.

Paso siguiente: Obtén más información sobre cómo crear una referencia de Cloud Storage.

Configuración avanzada

Hay algunos casos prácticos que necesitan configuración adicional:

El primer caso práctico es perfecto si tienes usuarios en todo el mundo y quieres almacenar sus datos cerca de ellos. Por ejemplo, puedes crear depósitos en EE.UU., Europa y Asia para almacenar datos de usuarios de esas regiones, a fin de reducir la latencia.

El segundo caso práctico es útil si tienes datos con diferentes patrones de acceso. Por ejemplo, puedes configurar un depósito regional o multirregional que almacene fotos o cualquier tipo de contenido al que se accede con frecuencia y, por otro lado, un depósito de Nearline o Coldline que almacene copias de seguridad de usuarios y otros tipos de contenido a los que se accede con poca frecuencia.

En ambos casos, te recomendamos usar varios depósitos de almacenamiento.

El tercer caso práctico es útil si estás creando una app, como Google Drive, que permite a los usuarios acceder con varias cuentas (por ejemplo, una cuenta personal y una cuenta de trabajo). Puedes usar una instancia de app de Firebase personalizada para autenticar cada cuenta adicional.

Usa varios depósitos de almacenamiento

Si deseas usar un depósito de almacenamiento distinto del que se proporcionó antes de forma predeterminada o usar varios depósitos de almacenamiento en una sola app, puedes crear una instancia de firebase.storage que haga referencia a tu depósito personalizado:

// Get a non-default Storage bucket
var storage = firebase.app().storage("gs://my-custom-bucket");

Trabaja con depósitos importados

Cuando importes un depósito existente de Cloud Storage a Firebase, deberás permitir que Firebase acceda a estos archivos con la herramienta gsutil que se incluye en el SDK de Google Cloud. Para ello, usa el siguiente comando:

gsutil -m acl ch -r -u firebase-storage@system.gserviceaccount.com:O gs://<your-cloud-storage-bucket>

Esto no afecta los depósitos creados recientemente, ya que el control de acceso predeterminado permite el acceso de Firebase. Esta es una medida temporal y se ejecutará de forma automática en el futuro.

Usa una app de Firebase personalizada

Si deseas compilar una app más compleja con una firebase.app.App personalizada, puedes crear una instancia de firebase.storage.Storage que se inicialice con la app, como se indica a continuación:

// Get the default bucket from a custom firebase.app.App
var storage = customApp.storage();

// Get a non-default bucket from a custom firebase.app.App
var storage = customApp.storage("gs://my-custom-bucket");