Intégration avec Google Cloud

Cloud Storage pour Firebase est étroitement intégré à Google Cloud . Les SDK Firebase pour Cloud Storage stockent les fichiers directement dans les buckets Google Cloud Storage et, à mesure que votre application se développe, vous pouvez facilement intégrer d'autres services Google Cloud, tels que le calcul géré comme App Engine ou Cloud Functions, ou des API de machine learning comme Cloud Vision ou Google. Traduire.

Firebase utilise les 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 Firebase qui utilise 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 . Consultez ce guide d'assistance Firebase pour plus d'informations.

Sous le capot, les SDK Firebase pour Cloud Storage utilisent le bucket par défaut du niveau gratuit d' App Engine . Cela vous permet d'être rapidement opérationnel avec Cloud Storage, sans avoir à saisir de carte de crédit ou à activer un compte Cloud Billing. 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. Apprenez-en plus sur les forfaits sur notre page de tarification .

Stockage Google Cloud

Vous pouvez utiliser les API Google Cloud Storage pour accéder aux fichiers téléchargés via les SDK Firebase pour Cloud Storage, notamment pour effectuer des opérations plus complexes, telles que copier ou déplacer un fichier, ou répertorier tous les fichiers disponibles dans une référence.

Il est important de noter que ces requêtes utilisent les options de contrôle d'accès de Google Cloud Storage, plutôt que les règles d'authentification Firebase et de sécurité Cloud Storage.

Apis

En plus des SDK Firebase pour Cloud Storage, il existe plusieurs autres façons 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 proposons des bibliothèques côté serveur, ainsi qu'une API XML RESTful compatible JSON et S3, ou si vous devez scripter des modifications ou effectuer d'autres tâches administratives, nous disposons d'un outil de ligne de commande qui sera utile.

SDK du serveur Google Cloud

Google Cloud propose des SDK de serveur de haute qualité pour un certain nombre de produits cloud, notamment Cloud Storage. Ces bibliothèques sont disponibles en Node.js , Java , go , 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.

Un exemple d'utilisation du SDK Google Cloud Storage est présenté ci-dessous :

Noeud.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 un langage sans bibliothèque cliente, si vous souhaitez faire quelque chose que les bibliothèques clientes ne font pas ou si vous avez simplement un client HTTP préféré que vous préférez utiliser, Google Cloud Storage propose des API pour JSON et XML . .

En plus de ces API d'accès aux données de stockage, pour gérer les buckets Cloud Storage à utiliser dans les projets Firebase, vous pouvez utiliser l' API Cloud Storage pour Firebase .

gsutil

gsutil est un outil de ligne de commande qui vous donne un accès direct à Cloud Storage. Vous pouvez utiliser gsutil pour effectuer un large éventail de tâches de gestion de buckets et d'objets, notamment :

  • Chargement, téléchargement et suppression d'objets.
  • Liste des buckets et des objets.
  • Déplacer, copier et renommer des objets.
  • Modification des ACL d'objet et de compartiment.

gsutil permet d'autres opérations avancées, telles que déplacer des fichiers d'un répertoire à un autre ou supprimer tous les fichiers situés sous un certain emplacement.

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

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

La suppression par lots de tous les fichiers sous 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 une 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 d’utiliser au mieux ces ressources partagées, les buckets disposent d’une capacité initiale d’E/S.

Lorsque vous envisagez d'intégrer Cloud Storage pour Firebase dans votre application, réfléchissez au taux de requêtes minimum dont votre application a besoin pour de bonnes performances et à l'efficacité des requêtes. Passez en revue les directives concernant les taux de demandes , et en particulier l'augmentation des taux de demandes .

Gestion des versions d'objet

Avez-vous déjà supprimé quelque chose par accident sans avoir effectué de sauvegarde ? Google Cloud Storage prend en charge la gestion des versions d'objets , qui offre un moyen automatique de sauvegarder vos données et de les restaurer à partir de ces sauvegardes. Vous pouvez activer le contrôle de version d'objet à l'aide de la commande gsutil versioning set :

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

Cloud Storage récupère toujours la version la plus récente, donc 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

Avoir la possibilité d'archiver ou de supprimer automatiquement des fichiers obsolètes est une fonctionnalité utile pour de nombreuses applications. Heureusement, Google Cloud Storage propose la gestion du cycle de vie des objets , qui vous permet de supprimer ou d'archiver des objets après un certain temps.

Considérez une application de partage de photos dont vous souhaitez que toutes les photos soient supprimées en un jour. Vous pouvez configurer une stratégie de cycle de vie des objets comme suit :

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

Et déployez-le à l'aide de la commande gsutil lifecycle set :

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 utilisateur importantes que vous souhaitez conserver pendant une longue période avec des photos que vous souhaitez supprimer quotidiennement, vous souhaiterez peut-être utiliser deux compartiments distincts ou effectuer des suppressions manuellement. avec gsutil ou votre propre serveur.

Moteur d'application

App Engine est une « plateforme en tant que service » qui adapte automatiquement la logique backend 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 ; vous n'avez aucun serveur à 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 le codage audio, le transcodage vidéo et les transformations d’images, ainsi que d’autres traitements en arrière-plan gourmands en calcul.

Les environnements Java, Python et Go Standard pour App Engine incluent l'API App Engine Images ( Java , Python , qui peut redimensionner, faire pivoter, retourner et recadrer une image, ainsi que renvoyer une URL de diffusion d'image qui permet des transformations côté client. , similaire à Cloudinary et Imgix.

Lors de l'importation d'un projet Google Cloud existant dans Firebase, si vous souhaitez rendre des objets App Engine existants disponibles dans Firebase, vous devez définir le contrôle d'accès par défaut sur vos objets pour permettre à Firebase d'y accéder 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 App Engine Datastore Master/Slave.
  2. Le projet a un ID de projet préfixé par domaine, par exemple : domain.com:project-1234 .

Dans l'un ou l'autre de ces cas, le projet ne prendra pas en charge 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 (bêta)

Google Cloud Functions est une solution de calcul asynchrone légère, basée sur les événements, qui vous permet de créer de petites fonctions à usage unique qui répondent aux événements sans avoir besoin 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 constitue le moyen le plus rapide de réagir aux modifications apportées à Cloud Storage.

API Google Cloud Vision

L' API Google Cloud Vision permet aux développeurs de comprendre le contenu d'une image en encapsulant de puissants modèles d'apprentissage automatique dans une API facile à utiliser. 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 vocale Google Cloud

Semblable à l'API Vision, l' API Google Cloud Speech permet aux développeurs d'extraire le texte 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'ils sont combinés avec l' API Google Cloud Natural Language , les développeurs peuvent à la fois extraire le texte brut et déduire la signification de ce texte. Et si une audience mondiale est requise, associez-la à l' API Google Translate pour traduire le texte dans plus de 90 langues.