Integra con Google Cloud

Cloud Storage per Firebase è strettamente integrato con Google Cloud . Il Firebase SDK per memorizzare i file di cloud storage direttamente in secchi Google Cloud Storage , e come la vostra applicazione cresce, è possibile integrare facilmente altri servizi di Google Cloud, come ad esempio elaborazione gestito come App Engine o cloud funzioni, o API machine learning come Vision Cloud o Google Tradurre.

Firebase utilizza gli account del servizio Google Cloud per operare e gestire i servizi senza condividere le credenziali dell'utente. Quando si crea un progetto che utilizza Firebase Cloud Storage, si potrebbe notare che un account di servizio corrispondente è già disponibile nel progetto: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Vedere questo guida di supporto Firebase per ulteriori informazioni.

Sotto il cofano, Firebase SDK per Cloud Storage utilizzare il secchio di default nella App Engine libera livello. Ciò ti consente di essere subito operativo con Cloud Storage, senza dover inserire una carta di credito o abilitare un account Cloud Billing. Consente inoltre di condividere facilmente i dati tra Firebase e un progetto Google Cloud.

L'integrazione con Google Cloud, inclusa l'importazione di bucket Cloud Storage esistenti, richiede un progetto Firebase sul piano Blaze. Scopri di più sui piani sulla nostra pagina dei prezzi .

Archiviazione cloud di Google

È possibile utilizzare le API di cloud storage di Google per accedere ai file caricati tramite gli SDK Firebase per Cloud Storage, in particolare per eseguire operazioni più complesse, come ad esempio la copia o lo spostamento di un file, oppure tutti i file disponibili in un punto di riferimento.

E 'importante notare che queste richieste di utilizzare Google Cloud Storage opzioni di controllo di accesso , piuttosto che Firebase autenticazione e norme di sicurezza Cloud Storage.

API

Oltre agli SDK Firebase per Cloud Storage, ci sono molti altri modi per accedere ai dati archiviati nel tuo bucket Cloud Storage, a seconda di cosa vuoi fare. Se accedi dati su un server, offriamo librerie lato server, così come una JSON compatibile e S3 XML API RESTful, o se avete bisogno di modifiche di script o eseguire altre attività di amministrazione, abbiamo uno strumento a riga di comando che tornerà utile.

SDK del server Google Cloud

Google Cloud offre SDK per server di alta qualità per una serie di prodotti cloud, incluso Cloud Storage. Queste librerie sono disponibili in Node.js , Java , andare , Python , PHP , e Rubino .

Per ulteriori informazioni, comprese le istruzioni di installazione, l'autenticazione e la risoluzione dei problemi, consultare la documentazione specifica della piattaforma collegata sopra.

Di seguito è mostrato un esempio di utilizzo per l'SDK di Google Cloud Storage:

Nodo.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) {});
    

Giava

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

Partire

    // 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)
    }
    

Pitone

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

Rubino

    # 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

Se stai usando un linguaggio senza una libreria client, voler fare qualcosa che le librerie client non fare, o semplicemente avere un client HTTP preferito che si preferisce l'uso, Google Cloud Storage offre API sia per JSON e XML .

In aggiunta a queste API di accesso ai dati di archiviazione, per gestire secchi Cloud Storage per l'utilizzo in progetti Firebase, è possibile utilizzare il Cloud Storage per Firebase API .

gsutil

gsutil è uno strumento a riga di comando che consente l'accesso diretto a Cloud Storage. È possibile utilizzare gsutil per fare una vasta gamma di attività di benna e di gestione degli oggetti, tra cui:

  • Caricamento, download ed eliminazione di oggetti.
  • Elenco di bucket e oggetti.
  • Spostare, copiare e rinominare oggetti.
  • Modifica degli ACL di oggetti e bucket.

gsutil consentire altre operazioni avanzate, come lo spostamento di file da una directory ad un'altra, o l'eliminazione di tutti i file di sotto di una certa posizione.

Spostare tutti i file da un riferimento ad un altro è facile come:

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

Batch eliminazione di tutti i file sotto il riferimento è allo stesso modo 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

Richiedi tariffe

Google Cloud Storage è un servizio altamente scalabile che utilizza la tecnologia di ridimensionamento automatico per ottenere tassi di richiesta molto elevati.

Google Cloud Storage è un servizio multi-tenant, il che significa che gli utenti condividono lo stesso insieme di risorse sottostanti. Per sfruttare al meglio queste risorse condivise, i bucket hanno una capacità di I/O iniziale.

Quando prevedi di integrare Cloud Storage per Firebase nella tua app, pensa a un tasso minimo di richieste di cui la tua app ha bisogno per ottenere buone prestazioni e per effettuare richieste in modo efficiente. Linee guida opinione su tassi di richiesta , e in particolare dilagare richiesta tassi .

Versioning degli oggetti

Hai mai cancellato qualcosa per sbaglio e non hai avuto un backup? Supporti Google Cloud Storage oggetto delle versioni , che fornisce un modo automatico per eseguire i vostri dati, e il ripristino da tali backup. È possibile attivare oggetto Versioning utilizzando il gsutil versioning set comandi:

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

Cloud Storage preleva sempre la versione più recente, quindi se desideri ripristinare un oggetto, devi utilizzare una delle altre API o strumenti sopra indicati per impostare l'oggetto desiderato come il più recente.

Gestione del ciclo di vita degli oggetti

Avere la possibilità di archiviare o eliminare automaticamente i file obsoleti è una funzionalità utile per molte applicazioni. Per fortuna, Google Cloud Storage fornisce Oggetto Lifecycle Management , che consente di eliminare o di oggetti di archivio dopo un certo periodo di tempo.

Considera un'applicazione di condivisione di foto che desideri eliminare tutte le foto entro un giorno. È possibile impostare una politica del ciclo di vita degli oggetti come segue:

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

E distribuirlo utilizzando il gsutil lifecycle set dei comandi:

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

Tieni presente che questo vale per tutti i file nel bucket, quindi se stai archiviando importanti backup degli utenti che desideri archiviare per lungo tempo insieme alle foto laterali che desideri eliminare quotidianamente, potresti voler utilizzare due bucket separati o eseguire le eliminazioni manualmente con gsutil o il proprio server.

Motore dell'app

App Engine è una "Platform as a Service" che ridimensiona automaticamente la logica di backend in risposta alla quantità di traffico che riceve. Carica semplicemente il tuo codice di backend e Google gestirà la disponibilità della tua app; non ci sono server da fornire o mantenere. App Engine è un modo semplice e veloce per aggiungere ulteriore potenza di elaborazione o esecuzione affidabile alla tua applicazione Firebase.

Gli SDK Firebase per Cloud Storage utilizzano il bucket predefinito di App Engine, il che significa che se crei un'app App Engine, puoi utilizzare le API di App Engine integrate per condividere i dati tra Firebase e App Engine. Ciò è utile per eseguire la codifica audio, la transcodifica video e le trasformazioni di immagini, nonché altre elaborazioni in background ad alta intensità di calcolo.

Il Java, Python, e andare ambienti standard per App Engine comprendono l'App Engine Immagini API ( Java , Python , che può ridimensionare, ruotare, capovolgere, e ritagliare un'immagine, così come restituire un servire URL di un'immagine che consente le trasformazioni lato client , simile a Cloudinary e Imgix.

Quando si importa un progetto Google Cloud esistente in Firebase, se si desidera rendere gli oggetti disponibili in Firebase qualsiasi App Engine esistente, è necessario impostare il controllo di accesso predefinito sui vostri oggetti per consentire Firebase per accedervi eseguendo il seguente comando utilizzando gsutil :

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

problemi conosciuti

Esistono due casi noti in cui non puoi importare la tua app App Engine:

  1. Il progetto contiene una precedente app App Engine Datastore Master/Slave.
  2. Il progetto ha un dominio prefissato ID progetto, ad esempio: domain.com:project-1234 .

In entrambi i casi, il progetto non supporterà Cloud Storage per Firebase e dovresti creare un nuovo progetto Firebase per utilizzare Cloud Storage. Contattare l'assistenza in modo che possiamo aiutarvi.

Funzioni di Google Cloud (beta)

Funzioni di Google Cloud è una soluzione leggera, a base di eventi asincroni di calcolo che permette di creare piccoli, funzioni a scopo unico che rispondono agli eventi, senza la necessità di gestire un server o un ambiente di runtime. Queste funzioni possono essere utilizzate per transcodificare video, classificare immagini utilizzando l'apprendimento automatico o sincronizzare i metadati con Firebase Realtime Database. Con un sovraccarico ancora inferiore rispetto ad App Engine, Cloud Functions è il modo più veloce per reagire ai cambiamenti in Cloud Storage.

API di Google Cloud Vision

Il Google Cloud Vision API consente agli sviluppatori di capire il contenuto di un'immagine incapsulando macchina potente modelli di apprendimento in un facile utilizzo API. Classifica rapidamente le immagini in migliaia di categorie, rileva singoli oggetti e volti all'interno delle immagini, trova e legge le parole stampate contenute nelle immagini, identifica i contenuti offensivi e fornisce persino un'analisi del sentimento delle immagini.

API di Google Cloud Speech

Simile alle API Vision, lo Speech API di Google Cloud consente agli sviluppatori di testo estratto da un file audio memorizzato nel Cloud Storage. L'API riconosce oltre 80 lingue e varianti, per supportare la tua base di utenti globale. In combinazione con l' API di Google Cloud linguaggio naturale , gli sviluppatori possono sia estratto il testo crudo e significato inferire su quel testo. E se è necessario un pubblico globale, Coppia questo con l' API di Google Translate per tradurre il testo in 90+ lingue.