Zintegruj z Google Cloud

Cloud Storage dla Firebase jest ściśle zintegrowany z Google Cloud . Pakiety SDK Firebase do Cloud Storage przechowują pliki bezpośrednio w zasobnikach Google Cloud Storage , a w miarę rozwoju aplikacji możesz łatwo integrować inne usługi Google Cloud, takie jak zarządzane obliczenia, takie jak App Engine lub Cloud Functions, lub interfejsy API uczenia maszynowego, takie jak Cloud Vision lub Google Tłumaczyć.

Firebase korzysta z kont usług Google Cloud do obsługi usług i zarządzania nimi bez udostępniania danych logowania użytkownika. Kiedy tworzysz projekt Firebase korzystający z Cloud Storage, możesz zauważyć, że w Twoim projekcie jest już dostępne odpowiednie konto usługi: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Więcej informacji znajdziesz w tym przewodniku pomocy technicznej Firebase .

Pod maską zestawy SDK Firebase do przechowywania w chmurze korzystają z domyślnego zasobnika w warstwie bezpłatnej App Engine . Dzięki temu możesz szybko rozpocząć korzystanie z Cloud Storage, bez konieczności wkładania karty kredytowej lub włączania konta rozliczeniowego Cloud. Umożliwia także łatwe udostępnianie danych między Firebase a projektem Google Cloud.

Integracja z Google Cloud, w tym import istniejących zasobników Cloud Storage, wymaga projektu Firebase w planie Blaze. Dowiedz się więcej o planach na naszej stronie z cenami .

Pamięć w chmurze Google

Za pomocą interfejsów API Google Cloud Storage możesz uzyskać dostęp do plików przesłanych za pośrednictwem pakietów SDK Firebase do Cloud Storage, zwłaszcza w celu wykonywania bardziej złożonych operacji, takich jak kopiowanie lub przenoszenie pliku lub wyświetlanie listy wszystkich plików dostępnych w odnośniku.

Należy pamiętać, że w tych żądaniach wykorzystywane są opcje kontroli dostępu Google Cloud Storage, a nie uwierzytelnianie Firebase i reguły bezpieczeństwa Cloud Storage.

Pszczoła

Oprócz pakietów SDK Firebase do Cloud Storage istnieje wiele innych sposobów uzyskiwania dostępu do danych przechowywanych w zasobniku Cloud Storage, w zależności od tego, co chcesz zrobić. Jeśli uzyskujesz dostęp do danych na serwerze, oferujemy biblioteki po stronie serwera, a także interfejs API XML RESTful zgodny z JSON i S3, lub jeśli chcesz wprowadzić zmiany w skrypcie lub wykonać inne zadania administracyjne, mamy narzędzie wiersza poleceń, które się przyda.

Pakiety SDK serwera Google Cloud

Google Cloud oferuje wysokiej jakości pakiety SDK serwerów dla wielu produktów w chmurze, w tym Cloud Storage. Biblioteki te są dostępne w Node.js , Java , go , Python , PHP i Ruby .

Aby uzyskać więcej informacji, w tym instrukcje dotyczące instalacji, uwierzytelniania i rozwiązywania problemów, zapoznaj się z dokumentacją dotyczącą konkretnej platformy, do której link znajduje się powyżej.

Przykładowe użycie pakietu SDK Google Cloud Storage pokazano poniżej:

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

Jawa

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

Iść

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

Pyton

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

API RESTOWE

Jeśli używasz języka bez biblioteki klienckiej, chcesz zrobić coś, czego nie robią biblioteki klienckie, lub po prostu masz ulubionego klienta HTTP, którego wolisz używać, Google Cloud Storage oferuje interfejsy API zarówno dla JSON , jak i XML .

Oprócz tych interfejsów API dostępu do danych do przechowywania, do zarządzania zasobnikami Cloud Storage do wykorzystania w projektach Firebase możesz używać interfejsu API Cloud Storage for Firebase .

gsutil

gsutil to narzędzie wiersza poleceń, które zapewnia bezpośredni dostęp do Cloud Storage. Za pomocą gsutil możesz wykonywać szeroką gamę zadań związanych z zarządzaniem zasobnikami i obiektami, w tym:

  • Przesyłanie, pobieranie i usuwanie obiektów.
  • Lista wiader i obiektów.
  • Przenoszenie, kopiowanie i zmiana nazw obiektów.
  • Edycja list ACL obiektów i zasobników.

gsutil pozwala na inne zaawansowane operacje, takie jak przenoszenie plików z jednego katalogu do drugiego lub usuwanie wszystkich plików poniżej określonej lokalizacji.

Przenoszenie wszystkich plików z jednego odniesienia do drugiego jest tak proste, jak:

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

Zbiorcze usuwanie wszystkich plików poniżej odniesienia jest podobnie intuicyjne:

# 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

Zapytaj o stawki

Google Cloud Storage to wysoce skalowalna usługa, która wykorzystuje technologię automatycznego skalowania, aby osiągnąć bardzo wysoki współczynnik żądań.

Google Cloud Storage to usługa wielodostępna, co oznacza, że ​​użytkownicy korzystają z tego samego zestawu podstawowych zasobów. Aby jak najlepiej wykorzystać te współdzielone zasoby, segmenty mają początkową pojemność IO.

Planując integrację Cloud Storage dla Firebase ze swoją aplikacją, pomyśl o minimalnej liczbie żądań wymaganej przez aplikację do zapewnienia dobrej wydajności oraz o efektywnym wysyłaniu żądań. Przejrzyj wytyczne dotyczące liczby żądań , a zwłaszcza zwiększania liczby żądań .

Wersjonowanie obiektów

Czy kiedykolwiek usunąłeś coś przez przypadek i nie miałeś kopii zapasowej? Google Cloud Storage obsługuje wersjonowanie obiektów , które zapewnia automatyczny sposób tworzenia kopii zapasowych danych i przywracania z nich. Wersjonowanie obiektów można włączyć za pomocą polecenia versioning set gsutil :

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

Cloud Storage zawsze pobiera najnowszą wersję, więc jeśli chcesz przywrócić obiekt, musisz użyć jednego z powyższych interfejsów API lub narzędzi, aby ustawić żądany obiekt jako najnowszy.

Zarządzanie cyklem życia obiektu

Możliwość automatycznego archiwizowania lub usuwania nieaktualnych plików jest przydatną funkcją w wielu aplikacjach. Na szczęście Google Cloud Storage zapewnia zarządzanie cyklem życia obiektu , które pozwala usuwać lub archiwizować obiekty po określonym czasie.

Rozważ aplikację do udostępniania zdjęć, w której chcesz, aby wszystkie zdjęcia zostały usunięte w ciągu jednego dnia. Możesz skonfigurować zasady cyklu życia obiektu w następujący sposób:

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

I wdróż go za pomocą polecenia gsutil lifecycle set :

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

Pamiętaj, że dotyczy to wszystkich plików w zasobniku, więc jeśli przechowujesz ważne kopie zapasowe użytkowników, które chcesz przechowywać przez dłuższy czas, wraz ze zdjęciami, które chcesz codziennie usuwać, możesz użyć dwóch oddzielnych zasobników lub usunąć ręcznie z gsutil lub własnym serwerem.

Silnik aplikacji

App Engine to „platforma jako usługa”, która automatycznie skaluje logikę zaplecza w odpowiedzi na ilość odbieranego ruchu. Po prostu prześlij swój kod backendu, a Google będzie zarządzać dostępnością Twojej aplikacji. nie ma serwerów, które mógłbyś udostępnić lub utrzymać. App Engine to szybki i łatwy sposób na dodanie dodatkowej mocy obliczeniowej lub zaufanego wykonania do aplikacji Firebase.

Zestawy SDK Firebase do Cloud Storage korzystają z domyślnego zasobnika App Engine, co oznacza, że ​​jeśli utworzysz aplikację App Engine, możesz używać wbudowanych interfejsów API App Engine do udostępniania danych między Firebase i App Engine. Jest to przydatne do kodowania dźwięku, transkodowania wideo i transformacji obrazu, a także do innego przetwarzania w tle wymagającego dużej mocy obliczeniowej.

Środowiska Java, Python i go Standard dla App Engine obejmują interfejs App Engine Images API ( Java , Python , który może zmieniać rozmiar, obracać, odwracać i przycinać obraz, a także zwracać adres URL udostępniania obrazu, co pozwala na transformacje po stronie klienta , podobny do Cloudinary i Imgix.

Jeśli podczas importowania istniejącego projektu Google Cloud do Firebase chcesz udostępnić w Firebase jakiekolwiek istniejące obiekty App Engine, musisz ustawić domyślną kontrolę dostępu do swoich obiektów, aby umożliwić Firebase dostęp do nich, uruchamiając następujące polecenie za pomocą gsutil :

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

Znane problemy

Istnieją dwa znane przypadki, w których nie można zaimportować aplikacji App Engine:

  1. Projekt zawiera dawną aplikację Master/Slave App Engine Datastore.
  2. Projekt ma identyfikator projektu z prefiksem domeny, na przykład: domain.com:project-1234 .

W żadnym z tych przypadków projekt nie będzie obsługiwał Cloud Storage dla Firebase i należy utworzyć nowy projekt Firebase, aby móc korzystać z Cloud Storage. Skontaktuj się z obsługą klienta , abyśmy mogli Ci pomóc.

Funkcje Google Cloud (beta)

Google Cloud Functions to lekkie, oparte na zdarzeniach, asynchroniczne rozwiązanie obliczeniowe, które umożliwia tworzenie małych, jednofunkcyjnych funkcji reagujących na zdarzenia bez konieczności zarządzania serwerem lub środowiskiem wykonawczym. Tych funkcji można używać do transkodowania wideo, klasyfikowania obrazów przy użyciu uczenia maszynowego lub synchronizowania metadanych z bazą danych Firebase Realtime Database. Dzięki jeszcze mniejszym obciążeniom niż App Engine Cloud Functions to najszybszy sposób reagowania na zmiany w Cloud Storage.

API Google Cloud Vision

Interfejs API Google Cloud Vision umożliwia programistom zrozumienie zawartości obrazu poprzez hermetyzację zaawansowanych modeli uczenia maszynowego w łatwym w użyciu interfejsie API. Szybko klasyfikuje obrazy na tysiące kategorii, wykrywa pojedyncze obiekty i twarze na obrazach, wyszukuje i odczytuje drukowane słowa zawarte na obrazach, identyfikuje obraźliwe treści, a nawet zapewnia analizę nastrojów na obrazach.

API Google Cloud Speech

Podobnie jak Vision API, Google Cloud Speech API umożliwia programistom wyodrębnianie tekstu z pliku audio przechowywanego w Cloud Storage. Interfejs API rozpoznaje ponad 80 języków i wariantów, aby wspierać globalną bazę użytkowników. W połączeniu z interfejsem API języka naturalnego Google Cloud programiści mogą wyodrębnić nieprzetworzony tekst i wywnioskować jego znaczenie. A jeśli wymagana jest publiczność na całym świecie, połącz to z interfejsem API Tłumacza Google , aby przetłumaczyć tekst na ponad 90 języków.