Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Integra en Google Cloud Platform

Cloud Storage para Firebase se integra estrechamente a Google Cloud Platform (GCP). Los SDK de Firebase para Cloud Storage almacenan archivos directamente en los buckets de Google Cloud Storage y, a medida que crece tu app, puedes integrar con facilidad otros servicios de Cloud, como el procesamiento administrado con servicios como App Engine o Cloud Functions, o las API de aprendizaje automático con servicios como Cloud Vision o Google Traductor.

Firebase usa cuentas de servicio de GCP para operar y administrar servicios sin compartir credenciales de usuario. Cuando crees un proyecto de Firebase con Google Cloud Storage, podrías observar que una cuenta de servicio correspondiente ya está disponible en tu proyecto: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com.. Consulta esta guía de asistencia de Firebase para obtener más información.

De forma interna, los SDK de Firebase para Cloud Storage usan el depósito predeterminado en el nivel gratuito de Google App Engine. Esto te permite comenzar a utilizar Google Cloud Storage rápidamente, sin necesidad de ingresar una tarjeta de crédito ni habilitar una cuenta de facturación. También te permite compartir datos fácilmente entre Firebase y un proyecto de Google Cloud Platform.

La integración con Google Cloud Platform, incluida la importación de depósitos existentes de Cloud Storage, requiere un proyecto de Firebase en el plan Blaze. Obtén más información acerca de los planes en nuestra página de precios.

Google Cloud Storage

Puedes usar las API de Google Cloud Storage para acceder a archivos subidos mediante los SDK de Firebase para Cloud Storage, en especial para ejecutar operaciones más complejas, como copiar o mover un archivo, o crear una lista de todos los archivos disponibles en una referencia.

Es importante que tengas en cuenta que estas solicitudes usan las opciones de control de acceso de Google Cloud Storage en lugar de Firebase Authentication y las reglas de seguridad de Storage.

API

Además de los SDK de Firebase para Cloud Storage, existen otras formas de acceder a los datos almacenados en tu depósito de Google Cloud Storage, según lo que desees hacer. Si accedes a los datos en un servidor, te ofrecemos bibliotecas del servidor, al igual que una API de RESTful XML compatible con JSON y S3. Si necesitas ejecutar secuencias de comandos de cambios o realizar otras tareas administrativas, tenemos una herramienta de línea de comandos que te será útil.

SDK de Google Cloud Server

Google Cloud Platform ofrece SDK de servidor de alta calidad para diversos productos de GCP, incluido Cloud Storage. Estas bibliotecas están disponibles en Node.js, Java, Go, Python, PHP y Ruby. Para obtener más información, incluidas las instrucciones de instalación, autenticación y solución de problemas, consulta los documentos específicos de cada plataforma en los vínculos.

A continuación, se muestran ejemplos de uso del SDK de Google Cloud:

Node.js

    // Require gcloud
    var gcloud = require('google-cloud');

    // Enable Storage
    var gcs = gcloud.storage({
      projectId: 'grape-spaceship-123',
      keyFilename: '/path/to/keyfile.json'
    });

    // Reference an existing bucket.
    var bucket = gcs.bucket('my-existing-bucket');

    // Upload a local file to a new file to be created in your bucket.
    bucket.upload('/photos/zoo/zebra.jpg', function(err, file) {
      if (!err) {
        // "zebra.jpg" is now in your bucket.
      }
    });

    // Download a file from your bucket.
    bucket.file('giraffe.jpg').download({
      destination: '/photos/zoo/giraffe.jpg'
    }, function(err) {});
    

Java

    // Enable Storage
    Storage storage = StorageOptions.builder()
      .authCredentials(AuthCredentials.createForJson(new FileInputStream("/path/to/my/key.json"))
      .build()
      .service();

    // Upload a local file to a new file to be created in your bucket.
    InputStream uploadContent = ...
    BlobId blobId = BlobId.of("my-existing-bucket", "zebra.jpg");
    BlobInfo blobInfo = BlobInfo.builder(blobId).contentType("text/plain").build();
    Blob zebraBlob = storage.create(blobInfo, content);

    // Download a file from your bucket.
    Blob giraffeBlob = storage.get("my-existing-bucket", "giraffe.jpg", null);
    InputStream downloadContent = giraffeBlob.getInputStream();
    

Go

    // Enable Storage
    client, err := storage.NewClient(ctx, option.WithServiceAccountFile("path/to/keyfile.json"))
    if err != nil {
        log.Fatal(err)
    }

    // Download a file from your bucket.
    rc, err := client.Bucket("my-existing-bucket").Object("giraffe.jpg").NewReader(ctx)
    if err != nil {
        log.Fatal(err)
    }
    defer rc.Close()
    body, err := ioutil.ReadAll(rc)
    if err != nil {
        log.Fatal(err)
    }
    

Python

    # Import gcloud
    from google.cloud import storage

    # Enable Storage
    client = storage.Client()

    # Reference an existing bucket.
    bucket = client.get_bucket('my-existing-bucket')

    # Upload a local file to a new file to be created in your bucket.
    zebraBlob = bucket.get_blob('zebra.jpg')
    zebraBlob.upload_from_filename(filename='/photos/zoo/zebra.jpg')

    # Download a file from your bucket.
    giraffeBlob = bucket.get_blob('giraffe.jpg')
    giraffeBlob.download_as_string()
    

PHP

    // Require gcloud
    require 'vendor/autoload.php';
    use Google\Cloud\Storage\StorageClient;

    // Enable Storage
    $storage = new StorageClient([
        'projectId' => 'grape-spaceship-123'
    ]);

    // Reference an existing bucket.
    $bucket = $storage->bucket('my-existing-bucket');

    // Upload a file to the bucket.
    $bucket->upload(
        fopen('/photos/zoo/zebra.jpg', 'r')
    );

    // Download a file from your bucket.
    $object = $bucket->object('giraffe.jpg');
    $object->downloadToFile('/photos/zoo/giraffe.jpg');
    

Ruby

    # Require gcloud
    require "google/cloud"

    # Enable Storage
    gcloud = Google::Cloud.new "grape-spaceship-123", "/path/to/keyfile.json"
    storage = gcloud.storage

    # Reference an existing bucket.
    bucket = storage.bucket "my-existing-bucket"

    # Upload a file to the bucket.
    bucket.create_file "/photos/zoo/zebra.jpg", "zebra.jpg"

    # Download a file from your bucket.
    file = bucket.file "giraffe.jpg"
    file.download "/photos/zoo/#{file.name}"
    

API de REST

Ya sea que uses un lenguaje sin una biblioteca cliente, quieras hacer algo que las bibliotecas cliente no admiten o simplemente tienes un cliente HTTP favorito, Cloud Storage ofrece API de JSON y XML que puedes usar.

gsutil

gsutil es una herramienta de línea de comandos que te da acceso directo a Cloud Storage. Puedes usar gsutil para una serie de tareas de administración de objetos y depósitos, como las siguientes:

  • subir, descargar y borrar objetos
  • crear listas de depósitos y objetos
  • mover, copiar y cambiar nombres de objetos
  • editar LCA de objetos y depósitos

gsutil permite otras operaciones avanzadas, como mover archivos de un directorio a otro o borrar todos los archivos en una ubicación determinada.

Mover todos los archivos de una referencia a otra es tan fácil como se muestra a continuación:

gsutil mv gs://bucket/old/reference gs://bucket/new/reference

Borrar todos los archivos en una referencia por lote es un proceso casi igual de intuitivo:

# Delete all files under a path
gsutil rm -r gs://bucket/reference/to/delete

# Delete all the files in a bucket but not the bucket gsutil rm -r gs://bucket/**

# Delete all the files AND the bucket # Removing the default bucket will break the Firebase SDKs for Cloud Storage and is strongly discouraged gsutil rm -r gs://bucket

Control de versiones de objetos

¿Alguna vez borraste algo por accidente sin tener una copia de seguridad? El control de versiones de objetos es una función de Cloud Storage que proporciona una manera automática de crear copias de seguridad de tus datos y de restablecerlos a partir de esas copias. Puedes habilitar el control de versiones de objetos mediante el comando gsutil versioning set:

gsutil versioning set on gs://<your-cloud-storage-bucket>

Firebase Storage siempre toma la versión más reciente, de modo que si deseas restablecer un objeto, debes usar una de las otras API o herramientas descritas previamente para establecer el objeto que desees como el más reciente.

Administración del ciclo de vida de los objetos

Tener la capacidad de archivar o borrar archivos inactivos de forma automática es una función útil para muchas aplicaciones. Afortunadamente, Cloud Storage proporciona la función de administración del ciclo de vida de los objetos, que te permite borrar o archivar objetos después de un período determinado.

Piensa en una aplicación para compartir fotos en la que deseas borrar todas las fotos al cabo de un día. Puedes configurar una política de ciclo de vida de objeto de la siguiente forma:

// lifecycle.json
{
  "lifecycle": {
    "rule":
    [
      {
        "action": {"type": "Delete"},
        "condition": {"age": 1}
      }
    ]
  }
}

Para implementarla, usa el comando gsutil lifecycle set:

gsutil lifecycle set lifecycle.json gs://<your-cloud-storage-bucket>

Ten en cuenta que esto se aplica a todos los archivos del depósito. Por lo tanto, si almacenas copias de seguridad de usuarios importantes que deseas mantener por un largo tiempo junto con fotos que deseas borrar a diario, te recomendamos usar dos depósitos distintos o ejecutar eliminaciones de forma manual con gsutil o tu propio servidor.

Google App Engine

Google App Engine es una "plataforma como servicio" que escala la lógica del backend de forma automática en respuesta a la cantidad de tráfico que recibe. Solo debes subir tu código de backend y Google administrará la disponibilidad de tu app, sin necesidad de que aprovisiones o mantengas ningún servidor. App Engine es una forma rápida y sencilla de agregar más potencia de procesamiento o ejecución de confianza a tu aplicación de Firebase.

Los SDK de Firebase para Cloud Storage usan el bucket predeterminado de Google App Engine, por lo que, si compilas una aplicación de App Engine, puedes usar las API integradas de esta plataforma para compartir datos entre Firebase y App Engine. Esto es útil para ejecutar codificaciones de audio, transcodificaciones de video y transformaciones de imagen, así como otras tareas de procesamiento intensivo en segundo plano.

Los entornos estándar de Java, Python y Go para Google App Engine incluyen la API de imágenes de GAE (Java y Python), que permite cambiar el tamaño de una imagen, rotarla, girarla y recortarla, además de mostrar una URL de entrega de imagen que permite realizar transformaciones en el cliente, de manera similar a Imgix y Cloudinary.

Cuando importas un proyecto existente de Google Cloud Platform a Firebase, si deseas que algún objeto de App Engine existente esté disponible en Firebase, deberás configurar el control de acceso predeterminado en tus objetos para permitir que Firebase tenga acceso. Para ello, debes ejecutar el siguiente comando en gsutil:

gsutil -m acl ch -r -u service-<project number;gt@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

Problemas conocidos

Existen dos casos conocidos en los que no puedes importar tu app de GAE:

  1. El proyecto contiene una app maestro/esclavo de App Engine Datastore antigua.
  2. El proyecto tiene un ID del proyecto con un prefijo de dominio, por ejemplo: domain.com:project-1234.

En ambos casos, el proyecto no será compatible con Google Cloud Storage para Firebase y deberás crear un proyecto de Firebase nuevo para usar Google Cloud Storage. Si necesitas ayuda, comunícate con el equipo de asistencia.

Google Cloud Functions (Beta)

Google Cloud Functions es una solución de procesamiento ligera, basada en eventos y asíncrona que permite crear funciones pequeñas de un solo propósito que responden a eventos, sin tener que administrar servidores ni entornos de ejecución. Estas funciones pueden usarse para la transcodificación de videos, la clasificación de imágenes con el aprendizaje automático o la sincronización de metadatos con Firebase Realtime Database. Con aún menos sobrecarga que Google App Engine, Cloud Functions es la forma más rápida de reaccionar a los cambios en Firebase Storage.

API de Google Cloud Vision

La API de Google Cloud Vision encapsula potentes modelos de aprendizaje automático en una API fácil de usar, lo que permite que los desarrolladores conozcan el contenido de una imagen. Clasifica imágenes con rapidez en miles de categorías, detecta objetos individuales y rostros en las imágenes, detecta y lee palabras impresas en las imágenes, identifica el contenido ofensivo y también proporciona un análisis de opiniones de la imagen.

API de Google Cloud Speech

De manera similar a la API de Vision, la API de Google Cloud Speech permite a los desarrolladores extraer texto desde un archivo de audio almacenado en Cloud Storage. La API reconoce más de 80 idiomas y variantes, por lo cual puedes usarla con tu base de usuarios global. Si se combina con la API de Google Cloud Natural Language, los desarrolladores pueden extraer el texto sin procesar, además de inferir el significado del texto. Si necesitas un público global, úsala en conjunto con la API de Google Traductor para traducir el texto a más de 90 idiomas.