Zintegruj z Google Cloud

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

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

Pod maską pakiety SDK Firebase dla Cloud Storage 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 importowanie istniejących zasobników Cloud Storage, wymaga projektu Firebase w abonamencie Blaze. Dowiedz się więcej o planach na naszej stronie cenowej .

Przechowywanie w chmurze Google

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

Pamiętaj, że te żądania korzystają z opcji kontroli dostępu Google Cloud Storage , a nie reguł zabezpieczeń Firebase i Cloud Storage.

Pszczoła

Oprócz pakietów SDK Firebase dla 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 RESTful XML zgodny z JSON i S3 lub jeśli potrzebujesz skryptu zmian lub wykonania innych zadań administracyjnych, mamy narzędzie wiersza poleceń, które przyda się.

Pakiety SDK serwera Google Cloud

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

Aby uzyskać więcej informacji, w tym instrukcje instalacji, uwierzytelnianie i rozwiązywanie problemów, zapoznaj się z dołączoną powyżej dokumentacją dotyczącą platformy.

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

REST API

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

Oprócz tych interfejsów API dostępu do danych w pamięci do zarządzania zasobnikami Cloud Storage do użytku w projektach Firebase możesz użyć interfejsu Cloud Storage for Firebase API .

gsutil

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

  • Przesyłanie, pobieranie i usuwanie obiektów.
  • Listowanie zasobników i obiektów.
  • Przenoszenie, kopiowanie i zmiana nazwy obiektów.
  • Edytowanie 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 znajdujących się w 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

Grupowe 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

Poproś o stawki

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

Google Cloud Storage to usługa wielodostępna, co oznacza, że ​​użytkownicy współdzielą ten sam zestaw podstawowych zasobów. Aby jak najlepiej wykorzystać te udostępnione zasoby, zasobniki mają początkową pojemność we/wy.

Planując integrację Cloud Storage dla Firebase ze swoją aplikacją, zastanów się nad minimalną szybkością żądań, której potrzebuje Twoja aplikacja, aby uzyskać dobrą wydajność, oraz o sprawnym wysyłaniu żądań. Zapoznaj się ze wskazówkami dotyczącymi częstotliwości żądań , a zwłaszcza zwiększania częstotliwości żądań .

Wersjonowanie obiektów

Czy kiedykolwiek przypadkowo usunąłeś coś 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 tych kopii zapasowych. Wersję obiektów można włączyć za pomocą gsutil versioning set :

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 pozostałych interfejsów API lub narzędzi powyżej, aby ustawić żądany obiekt jako najnowszy.

Zarządzanie cyklem życia obiektu

Możliwość automatycznego archiwizowania lub usuwania nieaktualnych plików jest przydatną funkcją dla wielu aplikacji. Na szczęście Google Cloud Storage zapewnia zarządzanie cyklem życia obiektów , które umożliwia usuwanie lub archiwizowanie obiektów po określonym czasie.

Rozważ aplikację do udostępniania zdjęć, w której wszystkie zdjęcia mają zostać usunięte w ciągu jednego dnia. Zasady cyklu życia obiektu można skonfigurować w następujący sposób:

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

I wdróż go za pomocą 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ługi czas, obok zdjęć bocznych, które chcesz codziennie usuwać, możesz użyć dwóch osobnych zasobników lub wykonać usuwanie ręcznie z gsutil lub własnym serwerem.

Silnik aplikacji

App Engine to „platforma jako usługa”, która automatycznie skaluje logikę backendu w odpowiedzi na ilość otrzymywanego ruchu. Po prostu prześlij 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 zwiększenie mocy obliczeniowej lub zaufanego wykonania do aplikacji Firebase.

Pakiety SDK Firebase dla Cloud Storage korzystają z domyślnego zasobnika App Engine, co oznacza, że ​​jeśli tworzysz 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 wykonywania kodowania audio, transkodowania wideo i transformacji obrazu, a także do innych intensywnych obliczeń przetwarzania w tle.

Ś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 obsługujący obrazy, który umożliwia przekształcenia po stronie klienta , podobny do Cloudinary i Imgix.

Podczas importowania istniejącego projektu Google Cloud do Firebase, jeśli chcesz udostępnić w Firebase dowolne 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 poprzednią aplikację App Engine Datastore Master/Slave.
  2. Projekt ma identyfikator projektu z prefiksem domeny, na przykład: domain.com:project-1234 .

W każdym z tych przypadków projekt nie będzie obsługiwał Cloud Storage for Firebase. Aby korzystać z Cloud Storage, musisz utworzyć nowy projekt Firebase. Skontaktuj się z pomocą techniczną , 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, które reagują 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 czasu rzeczywistego Firebase. Dzięki jeszcze mniejszym obciążeniom niż App Engine Cloud Functions to najszybszy sposób reagowania na zmiany w Cloud Storage.

Interfejs API Google Cloud Vision

Interfejs API Google Cloud Vision umożliwia programistom zrozumienie treści obrazu, umieszczając zaawansowane modele uczenia maszynowego w łatwym w użyciu interfejsie API. Szybko klasyfikuje obrazy na tysiące kategorii, wykrywa poszczególne obiekty i twarze na obrazach, wyszukuje i odczytuje drukowane słowa zawarte w obrazach, identyfikuje obraźliwe treści, a nawet zapewnia analizę sentymentu obrazu.

Interfejs 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. API rozpoznaje ponad 80 języków i wariantów, aby wspierać Twoją globalną bazę użytkowników. W połączeniu z interfejsem Google Cloud Natural Language API programiści mogą zarówno wyodrębnić nieprzetworzony tekst, jak i wywnioskować znaczenie tego tekstu. A jeśli potrzebna jest globalna publiczność, połącz to z interfejsem API Tłumacza Google , aby przetłumaczyć tekst na ponad 90 języków.