In Google Cloud integrieren

Cloud Storage für Firebase ist eng mit Google Cloud . Die Firebase SDKs für Cloud Storage speichern Dateien direkt in Google Cloud Storage Eimer und wie Ihre Anwendung wächst, können Sie ganz einfach auf andere Google - Cloud - Services integrieren, wie Managed Rechen wie App Engine oder Cloud - Funktionen, oder maschinelles Lernen APIs wie Cloud - Vision- oder Google Übersetzen.

Firebase verwendet Google Cloud-Dienstkonten, um Dienste zu betreiben und zu verwalten, ohne Benutzeranmeldedaten zu teilen. Wenn Sie ein Firebase - Projekt erstellen , die Cloud - Speicher verwendet, können Sie feststellen , dass ein entsprechendes Dienstkonto in Ihrem Projekt bereits vorhanden ist: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Sehen Sie diese Firebase Support Guide für weitere Informationen.

Unter der Haube Firebase SDKs für Cloud Storage verwendet die Standard - Eimer in der App Engine no-cost - Tiere. Auf diese Weise können Sie Cloud Storage schnell in Betrieb nehmen, ohne eine Kreditkarte hinterlegen oder ein Cloud-Rechnungskonto aktivieren zu müssen. Außerdem können Sie ganz einfach Daten zwischen Firebase und einem Google Cloud-Projekt austauschen.

Für die Integration in Google Cloud, einschließlich des Imports vorhandener Cloud Storage-Buckets, ist ein Firebase-Projekt im Blaze-Plan erforderlich. Erfahren Sie mehr über die Pläne auf unserer Preisseite .

Google Cloud-Speicher

Sie können die Verwendung von Google Cloud Storage APIs zum Zugriff auf Dateien über die Firebase SDKs für Cloud Storage hochgeladen vor allem komplexere Operationen wie Kopieren oder Verschieben eine Datei oder eine Liste aller Dateien auf einer Referenz verfügbar auszuführen.

Es ist wichtig , dass diese Anfragen Google Cloud Storage verwenden beachten Zugriffssteuerungsoptionen , anstatt Firebase Authentifizierung und Cloud Storage Sicherheitsregeln.

APIs

Zusätzlich zu den Firebase SDKs für Cloud Storage gibt es je nach gewünschter Aktion eine Reihe weiterer Möglichkeiten, auf Daten zuzugreifen, die in Ihrem Cloud Storage-Bucket gespeichert sind. Wenn Sie Daten auf einem Server zugreifen, bieten wir Server - Seite Bibliotheken sowie einen JSON und S3 kompatibel XML RESTful API, oder wenn Sie auf Skriptänderungen benötigen oder führen andere administrative Aufgaben haben wir ein Kommandozeilen - Tool bekommen , dass wird sich als nützlich erweisen.

Google Cloud-Server-SDKs

Google Cloud bietet hochwertige Server-SDKs für eine Reihe von Cloud-Produkten, einschließlich Cloud Storage. Diese Bibliotheken sind in Node.js , Java , geht , Python , PHP und Ruby - .

Weitere Informationen, einschließlich Installationsanweisungen, Authentifizierung und Fehlerbehebung, finden Sie in der oben verlinkten plattformspezifischen Dokumentation.

Die Beispielnutzung für das Google Cloud Storage SDK ist unten dargestellt:

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();
    

gehen

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

Rubin

    # 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}"
    

REST-API

Wenn Sie eine Sprache ohne Client - Bibliothek verwenden wollen , etwas zu tun , dass die Client - Bibliotheken nicht tun, oder einfach nur einen Lieblings HTTP - Client, den Sie verwenden bevorzugen würden, Google Cloud Storage bietet APIs für beide JSON und XML .

Zusätzlich zu diesen Zugriffsspeicherdaten - APIs, um Cloud Storage Eimer für den Einsatz in Projekten zu verwalten Firebase, Sie können Cloud Storage für Firebase API .

gsutil

gsutil ist ein Kommandozeilen - Tool , das Ihnen direkten Zugang zu Cloud Storage gibt. Sie können mit gsutil eine breite Palette von Eimern und Objekt - Management - Aufgaben zu tun, einschließlich:

  • Hochladen, Herunterladen und Löschen von Objekten.
  • Auflisten von Buckets und Objekten.
  • Verschieben, Kopieren und Umbenennen von Objekten.
  • Bearbeiten von Objekt- und Bucket-ACLs.

gsutil ermöglichen andere erweiterte Funktionen, wie zum Beispiel Dateien von einem Verzeichnis in ein anderes verschieben oder löschen Sie alle Dateien unter einem bestimmten Ort.

Sie alle Dateien von einem Verweis auf eine andere wird so einfach wie:

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

Batch alle Dateien unter einem Referenz Löschen ist ähnlich intuitiv:

# 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

Preise anfordern

Google Cloud Storage ist ein hochgradig skalierbarer Dienst, der Autoscaling-Technologie verwendet, um sehr hohe Anfrageraten zu erreichen.

Google Cloud Storage ist ein mandantenfähiger Dienst, d. h. Nutzer teilen sich dieselben zugrunde liegenden Ressourcen. Um diese gemeinsam genutzten Ressourcen optimal zu nutzen, verfügen Buckets über eine anfängliche E/A-Kapazität.

Denken Sie bei der Integration von Cloud Storage for Firebase in Ihre App über eine Mindestanforderungsrate nach, die Ihre App für eine gute Leistung benötigt, und über eine effiziente Anfrage. Überprüfung der Leitlinien über Anforderungsraten und vor allem Anforderungsraten Hochfahren .

Objektversionierung

Haben Sie schon einmal aus Versehen etwas gelöscht und hatten kein Backup? Google Cloud Storage unterstützt Objekt Versionierung , die eine automatische Art und Weise stellt Ihre Daten zu sichern und wiederherstellen von diesen Sicherungen. Sie können Objektversionierung mit dem aktivieren gsutil versioning set - Befehl:

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

Cloud Storage ruft immer die neueste Version ab. Wenn Sie also ein Objekt wiederherstellen möchten, müssen Sie eine der anderen oben genannten APIs oder Tools verwenden, um das gewünschte Objekt als die neueste Version festzulegen.

Objektlebenszyklus-Management

Die Möglichkeit, veraltete Dateien automatisch zu archivieren oder zu löschen, ist für viele Anwendungen eine nützliche Funktion. Glücklicherweise Google Cloud Storage bietet Object Lifecycle Management , mit dem Sie Objekte nach einer gewissen Zeit löschen oder archivieren können.

Ziehen Sie eine Fotofreigabeanwendung in Betracht, bei der alle Fotos innerhalb eines Tages gelöscht werden sollen. Sie können eine Objektlebenszyklusrichtlinie wie folgt einrichten:

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

Und stellen Sie sie unter Verwendung des gsutil lifecycle set - lifecycle set - Befehl:

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

Beachten Sie, dass dies für alle Dateien im Bucket gilt. Wenn Sie also wichtige Benutzer-Backups speichern, die Sie für längere Zeit zusammen mit Fotos speichern möchten, die Sie täglich löschen möchten, möchten Sie möglicherweise zwei separate Buckets verwenden oder das Löschen manuell durchführen mit gsutil oder Ihrem eigenen Server.

App Engine

App Engine ist eine "Platform as a Service", die die Back-End-Logik als Reaktion auf die Menge des empfangenen Datenverkehrs automatisch skaliert. Laden Sie einfach Ihren Back-End-Code hoch und Google verwaltet die Verfügbarkeit Ihrer App. Sie müssen keine Server bereitstellen oder warten. App Engine ist eine schnelle und einfache Möglichkeit, Ihrer Firebase-Anwendung zusätzliche Verarbeitungsleistung oder vertrauenswürdige Ausführung hinzuzufügen.

Die Firebase SDKs für Cloud Storage verwenden den App Engine-Standard-Bucket. Wenn Sie also eine App Engine-App erstellen, können Sie die integrierten App Engine-APIs verwenden, um Daten zwischen Firebase und App Engine auszutauschen. Dies ist nützlich für die Durchführung von Audiocodierung, Videotranscodierung und Bildtransformationen sowie für andere rechenintensive Hintergrundverarbeitungen.

Die Java, Python, und gehen Sie Standard - Umgebungen für App Engine gehören die App Engine Images API ( Java , Python , die die Größe, drehen, drehen und schneiden Sie ein Bild, sowie ein Bild dient URL zurück , die für die Client - Seite Transformationen erlaubt , ähnlich wie Cloudinary und Imgix.

Wenn ein vorhandenes Google Cloud - Projekt in Firebase importieren, wenn Sie in Firebase verfügbar jede bestehende App Engine - Objekte machen wollen, müssen Sie die Standard - Zugriffskontrolle auf Ihren Objekten setzen Firebase zugreifen, damit sie durch den folgenden Befehl ausführen mit gsutil :

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

Bekannte Probleme

Es gibt zwei bekannte Fälle, in denen Sie Ihre App Engine-App nicht importieren können:

  1. Das Projekt enthält eine ehemalige App Engine Datastore Master/Slave-App.
  2. Das Projekt hat einen Domain - Präfix Projekt - ID, zum Beispiel: domain.com:project-1234 .

In beiden Fällen unterstützt das Projekt Cloud Storage for Firebase nicht und Sie sollten ein neues Firebase-Projekt erstellen, um Cloud Storage zu verwenden. Kontakt Unterstützung , damit wir Ihnen helfen.

Google Cloud-Funktionen (Beta)

Google Cloud - Funktionen sind eine leichte, ereignisbasierte asynchrone Compute - Lösung , die Sie kleine, einzweckmaschinen Funktionen erstellen kann , dass reagieren , ohne dass Ereignisse einen Server oder eine Laufzeitumgebung zu verwalten. Diese Funktionen können zum Transkodieren von Videos, zum Klassifizieren von Bildern mithilfe von maschinellem Lernen oder zum Synchronisieren von Metadaten mit der Firebase Realtime Database verwendet werden. Mit noch weniger Overhead als App Engine ist Cloud Functions die schnellste Möglichkeit, auf Änderungen in Cloud Storage zu reagieren.

Google Cloud Vision-API

Die Google Cloud Vision - API ermöglicht es Entwicklern , den Inhalt eines Bildes zu verstehen , durch leistungsstarke Maschine Einkapseln Modelle in einer leicht zu bedienen API zu lernen. Es klassifiziert Bilder schnell in Tausende von Kategorien, erkennt einzelne Objekte und Gesichter in Bildern, findet und liest gedruckte Wörter in Bildern, identifiziert anstößige Inhalte und bietet sogar eine Analyse der Bildstimmung.

Google Cloud Speech API

Ähnlich wie bei der Vision - API, die Google Cloud Speech API ermöglicht es Entwicklern zu extrahieren Text aus einer Audiodatei in Cloud Storage gespeichert. Die API erkennt über 80 Sprachen und Varianten, um Ihre globale Benutzerbasis zu unterstützen. Wenn mit der kombinierten Google Cloud Natural Language API können Entwickler sowohl Extrakt der Rohtext und infer Bedeutung über diesen Text. Und wenn ein globales Publikum erforderlich ist, dieses Paar mit dem Google API übersetzen Sie den Text zu 90+ Sprachen zu übersetzen.