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

Intégration avec Google Cloud

Cloud Storage pour Firebase est étroitement intégré avec Google Cloud . Le Firebase SDKs pour stocker des fichiers Cloud Storage directement dans des seaux Google Cloud Storage , et que votre application se développe, vous pouvez facilement intégrer d' autres services Google Cloud, comme Compute géré comme App Engine ou fonctions de Cloud, ou API d'apprentissage de la machine comme nuage Vision ou Google Traduire.

Firebase utilise des comptes de service Google Cloud pour exploiter et gérer les services sans partager les informations d'identification des utilisateurs. Lorsque vous créez un projet qui utilise Firebase Cloud Storage, vous remarquerez peut - être qu'un compte de service correspondant est déjà disponible dans votre projet: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Voir ce guide de support Firebase pour plus d' informations.

Sous le capot, Firebase pour SDKs Cloud Storage utilisent le seau par défaut dans l' App Engine niveau gratuit. Cela vous permet d'être rapidement opérationnel avec Cloud Storage, sans avoir à saisir de carte de crédit ou à activer un compte de facturation Cloud. Il vous permet également de partager facilement des données entre Firebase et un projet Google Cloud.

L'intégration à Google Cloud, y compris l'importation de buckets Cloud Storage existants, nécessite un projet Firebase sur le plan Blaze. En savoir plus sur les plans sur notre page prix .

Stockage Google Cloud

Vous pouvez utiliser les API Google Cloud Storage pour accéder aux fichiers téléchargés via les SDKs Firebase pour Cloud Storage, notamment pour effectuer des opérations plus complexes, telles que la copie ou le déplacement d' un fichier ou la liste de tous les fichiers disponibles à une référence.

Il est important de noter que ces demandes utilisent Google Cloud Storage Options de contrôle d'accès , plutôt que Firebase d' authentification et de stockage Cloud Règles de sécurité.

Apis

En plus des SDK Firebase pour Cloud Storage, il existe un certain nombre d'autres moyens d'accéder aux données stockées dans votre bucket Cloud Storage, en fonction de ce que vous souhaitez faire. Si vous accédez à des données sur un serveur, nous offrons des bibliothèques côté serveur, ainsi qu'un JSON compatible et S3 XML API RESTful, ou si vous avez besoin de changements de script ou d' effectuer d' autres tâches administratives, nous avons un outil de ligne de commande sera utile.

SDK du serveur Google Cloud

Google Cloud propose des SDK de serveur de haute qualité pour un certain nombre de produits cloud, y compris Cloud Storage. Ces bibliothèques sont disponibles dans Node.js , Java , allez , Python , PHP et Ruby .

Pour plus d'informations, y compris les instructions d'installation, l'authentification et le dépannage, consultez la documentation spécifique à la plate-forme liée ci-dessus.

Voici un exemple d'utilisation du SDK Google Cloud Storage :

Node.js

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

    // Enable Cloud 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 Cloud 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();
    

Aller

    // Enable Cloud 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 Cloud 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 Cloud 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');
    

Rubis

    # Require gcloud
    require "google/cloud"

    # Enable Cloud 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 REST

Si vous utilisez une langue sans une bibliothèque cliente, veulent faire quelque chose que les bibliothèques clientes ne le font pas, ou juste un client HTTP préféré que vous préférez utiliser, Google Cloud Storage offre des API pour les deux JSON et XML .

En plus de ces API d'accès aux données de stockage, de gérer des seaux Cloud Storage pour une utilisation dans des projets Firebase, vous pouvez utiliser le Cloud Storage pour API Firebase .

gsutil

gsutil est un outil de ligne de commande qui vous donne un accès direct au Cloud Storage. Vous pouvez utiliser gsutil faire un large éventail de tâches de gestion godet et d'objets, y compris:

  • Chargement, téléchargement et suppression d'objets.
  • Répertorier les buckets et les objets.
  • Déplacer, copier et renommer des objets.
  • Modification des listes de contrôle d'accès des objets et des compartiments.

gsutil permettent à d' autres opérations avancées, telles que le déplacement de fichiers d'un répertoire à un autre, ou de supprimer tous les fichiers ci - dessous un certain endroit.

Se déplacer tous les fichiers d'une référence à une autre est aussi facile que:

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

Lot de supprimer tous les fichiers ci - dessous une référence est tout aussi intuitive:

# 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

Demander des tarifs

Google Cloud Storage est un service hautement évolutif qui utilise la technologie de mise à l'échelle automatique pour atteindre des taux de requêtes très élevés.

Google Cloud Storage est un service mutualisé, ce qui signifie que les utilisateurs partagent le même ensemble de ressources sous-jacentes. Afin de tirer le meilleur parti de ces ressources partagées, les buckets ont une capacité d'E/S initiale.

Lorsque vous envisagez d'intégrer Cloud Storage pour Firebase dans votre application, pensez à un taux de requêtes minimum dont votre application a besoin pour de bonnes performances et à effectuer des requêtes efficacement. Revoir les lignes directrices sur les taux de demande , et surtout la montée en puissance des taux de demande .

Gestion des versions d'objets

Avez-vous déjà supprimé quelque chose par accident et n'avez pas eu de sauvegarde ? Supports Google Cloud Storage objet Versioning , qui offre un moyen automatique pour sauvegarder vos données et restaurer à partir de ces sauvegardes. Vous pouvez activer l' objet Versioning à l' aide du gsutil versioning set commande:

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

Cloud Storage récupère toujours la version la plus récente. Par conséquent, si vous souhaitez restaurer un objet, vous devez utiliser l'une des autres API ou outils ci-dessus pour définir l'objet souhaité comme le plus récent.

Gestion du cycle de vie des objets

La possibilité d'archiver ou de supprimer automatiquement les fichiers obsolètes est une fonctionnalité utile pour de nombreuses applications. Heureusement, Google Cloud Storage fournit Object Management du cycle de vie , ce qui vous permet de supprimer ou d' objets d'archives après un certain laps de temps.

Considérez une application de partage de photos dans laquelle vous souhaitez que toutes les photos soient supprimées dans la journée. Vous pouvez configurer une politique de cycle de vie des objets comme suit :

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

Et le déployer à l' aide du gsutil lifecycle set commande:

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

Notez que cela s'applique à tous les fichiers du compartiment. Par conséquent, si vous stockez des sauvegardes d'utilisateurs importantes que vous souhaitez stocker pendant longtemps avec des photos que vous souhaitez supprimer quotidiennement, vous pouvez utiliser deux compartiments distincts ou effectuer des suppressions manuellement. avec gsutil ou votre propre serveur.

Moteur d'application

App Engine est une « plate-forme en tant que service » qui adapte automatiquement la logique principale en réponse à la quantité de trafic qu'elle reçoit. Téléchargez simplement votre code backend et Google gérera la disponibilité de votre application. il n'y a pas de serveurs à provisionner ou à entretenir. App Engine est un moyen simple et rapide d'ajouter une puissance de traitement supplémentaire ou une exécution fiable à votre application Firebase.

Les SDK Firebase pour Cloud Storage utilisent le bucket par défaut App Engine, ce qui signifie que si vous créez une application App Engine, vous pouvez utiliser les API App Engine intégrées pour partager des données entre Firebase et App Engine. Ceci est utile pour effectuer un codage audio, un transcodage vidéo et des transformations d'images, ainsi que d'autres traitements d'arrière-plan intensifs en calculs.

Java, Python, et allez les environnements standard pour App Engine comprennent App Engine API Images ( Java , Python , qui peut redimensionner, faire pivoter, retourner et recadrer une image, ainsi que le retour d' une image URL au service qui permet de transformations côté client , similaire à Cloudinary et Imgix.

Lors de l' importation d' un projet Google Cloud existant en Firebase, si vous voulez faire des objets existants App Engine disponible en Firebase, vous devez définir le contrôle d'accès par défaut sur vos objets pour permettre Firebase d'accéder eux en exécutant la commande suivante à l' aide gsutil :

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

Problèmes connus

Il existe deux cas connus dans lesquels vous ne pouvez pas importer votre application App Engine :

  1. Le projet contient une ancienne application maître/esclave App Engine Datastore.
  2. Le projet a un ID de domaine préfixé de projet, par exemple: domain.com:project-1234 .

Dans l'un ou l'autre de ces cas, le projet n'est pas compatible avec Cloud Storage pour Firebase et vous devez créer un nouveau projet Firebase afin d'utiliser Cloud Storage. Contactez le support afin que nous puissions vous aider.

Fonctions Google Cloud (version bêta)

Fonctions Google Cloud est une solution de calcul légère, basée sur des événements, asynchrone qui vous permet de créer de petites fonctions à usage unique qui répondent à des événements sans la nécessité de gérer un serveur ou un environnement d'exécution. Ces fonctions peuvent être utilisées pour transcoder des vidéos, classer des images à l'aide de l'apprentissage automatique ou synchroniser des métadonnées avec la base de données en temps réel Firebase. Avec encore moins de frais généraux qu'App Engine, Cloud Functions est le moyen le plus rapide de réagir aux changements dans Cloud Storage.

API Google Cloud Vision

L' API Google Cloud Vision permet aux développeurs de comprendre le contenu d'une image en encapsulant puissant des modèles d' apprentissage machine dans une API facile à l'utilisation. Il classe rapidement les images en milliers de catégories, détecte les objets et les visages individuels dans les images, trouve et lit les mots imprimés contenus dans les images, identifie le contenu offensant et fournit même une analyse des sentiments des images.

API Google Cloud Speech

Similaire à l'API Vision, l' API Speech Google Cloud permet aux développeurs de texte extrait d'un fichier audio stocké dans Cloud Storage. L'API reconnaît plus de 80 langues et variantes, pour prendre en charge votre base d'utilisateurs mondiale. Lorsqu'il est combiné avec l' API Google Cloud langue naturelle , les développeurs peuvent à la fois extrait le texte brut et le sens de ce texte au sujet déduisent. Et si un public mondial est nécessaire, avec le coupler cette API Google Translate pour traduire le texte en langues 90+.