Integracja z Google Cloud

Aplikacja Cloud Storage for Firebase jest ściśle zintegrowana z usługą Google Cloud Pakiety SDK Firebase dla platformy Cloud Storage przechowywać pliki bezpośrednio w Google Cloud Storage zasobnika, a w miarę rozwoju aplikacji możesz łatwo integrować inne usługi Google Cloud, takich jak zarządzane zasoby obliczeniowe, takie jak App Engine lub Cloud Functions, czy maszyny wirtualne, do uczenia się interfejsów API, takich jak Cloud Vision czy Tłumacz Google.

Firebase używa Google Cloud kont usługi do obsługi usług i zarządzania nimi bez udostępniania danych logowania użytkownika. Gdy tworzysz projekt Firebase wykorzystujący 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 Zobacz w tym przewodniku pomocy Firebase. i informacjami o nich.

Wewnętrzne pakiety SDK (Firebase) platformy Cloud Storage używają domyślnego zasobnika Poziom bezpłatny App Engine. Ten pozwala szybko rozpocząć korzystanie z usługi Cloud Storage, bez musisz wpisać dane karty kredytowej lub włączyć konto Cloud Billing. Dodatkowo pozwala łatwo udostępniać dane między Firebase a projektem Google Cloud.

Integracja z Google Cloud, w tym importowanie istniejących zasobów Cloud Storage wymaga projektu Firebase z abonamentem Blaze. Dowiedz się więcej o znajdziesz na naszej stronie z cennikiem.

Google Cloud Storage

Za pomocą Interfejsy API Google Cloud Storage dostęp do plików przesłanych za pomocą pakietów SDK Firebase dla aplikacji Cloud Storage, zwłaszcza w celu wykonywać bardziej złożone operacje, np. kopiowania lub przenoszenia pliku czy tworzenia listy wszystkich plików dostępnych w danym pliku referencyjnym.

Pamiętaj, że żądania te korzystają z parametru Google Cloud Storage opcji kontroli dostępu, a nie Firebase Authentication i Cloud Storage Security Rules.

Interfejsy API

Oprócz pakietów SDK Firebase dostępnych w aplikacji Cloud Storage dostępnych jest też wiele innych sposobów 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 możliwość korzystania z niego po stronie serwera, oraz interfejs API typu XML REST zgodny z JSON i S3 lub musisz tworzyć skrypty zmian lub wykonywać inne zadania administracyjne. narzędzia wiersza poleceń, które może okazać się przydatne.

Google Cloud pakietu SDK serwera

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

Więcej informacji, w tym instrukcje instalacji, uwierzytelnianie zapoznaj się z dokumentacją konkretnej platformy, do której link znajdziesz powyżej.

Poniżej znajdziesz przykład użycia pakietu SDK Google Cloud Storage:

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

Go

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

Ruby

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

Interfejs API typu REST

Jeśli używasz języka bez biblioteki klienta, których nie ma bibliotek klienta lub po prostu masz ulubionego klienta HTTP, bardziej mnie interesuje, Google Cloud Storage oferuje interfejsy API JSON i XML.

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

gsutil

gsutil to polecenie narzędzie liniowe, które daje bezpośredni dostęp do Cloud Storage. Możesz użyć usługi gsutil do wykonywania wielu zadań związanych z zarządzaniem zasobnikami i obiektami, w tym:

  • przesyłania, pobierania i usuwania obiektów;
  • Wyświetlam listę zasobników i obiektów.
  • przenoszenie i kopiowanie obiektów oraz zmienianie ich nazw;
  • Edytowanie list kontroli dostępu obiektów i zasobników.

gsutil umożliwia wykonywanie innych zaawansowanych operacji, takich jak przenoszenie plików z jednego katalogu do innego lub usunięcie wszystkich plików znajdujących się w określonej lokalizacji.

Przeniesienie wszystkich plików z jednego odwołania do innego jest dziecinnie proste:

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

Zbiorcze usuwanie wszystkich plików znajdujących się pod plikiem referencyjnym 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

Stawki żądań

Google Cloud Storage to wysoce skalowalna usługa wykorzystująca autoskalowanie do osiągnięcia bardzo wysokich wskaźników żądań.

Google Cloud Storage to usługa wielu najemców, co oznacza, że użytkownicy współdzielą ten sam zbiór podstawowych zasobów. Aby w pełni wykorzystać te możliwości, współdzielonych zasobów, zasobniki mają początkową pojemność na operacje wejścia-wyjścia.

Planując integrację usługi Cloud Storage for Firebase ze swoją aplikacją, minimalną częstotliwość żądań, która może zapewnić dobrą wydajność aplikacji o efektywność ich żądań. Zapoznaj się ze wskazówkami dotyczącymi współczynnika żądań, a zwłaszcza zwiększanie liczby żądań.

Obsługa wersji obiektów

Czy kiedykolwiek zdarzyło Ci się usunąć coś przez przypadek i nie mieć kopii zapasowej? Google Cloud Storage obsługuje obsługa wersji obiektów, który automatycznie tworzy kopie zapasowe danych i przywraca je z tych danych, kopie zapasowe. Obsługa wersji obiektów możesz włączyć za pomocą: gsutil versioning set polecenie:

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

Cloud Storage zawsze pobiera najnowszą wersję, więc jeśli chcesz lub przywrócić obiekt, musisz użyć innego interfejsu API lub narzędzia powyżej, aby ustawić wybrany obiekt jako najnowszy.

Zarządzanie cyklem życia obiektu

Możliwość automatycznego archiwizowania i usuwania nieaktualnych plików dla wielu aplikacji. Na szczęście Google Cloud Storage zapewnia Zarządzanie cyklem życia obiektów, co pozwala usuwać lub archiwizować obiekty po upływie określonego czasu.

Rozważ użycie aplikacji do udostępniania zdjęć, w której chcesz usuwać wszystkie zdjęcia w ciągu jednego dnia. Zasadę cyklu życia obiektu możesz skonfigurować w ten sposób:

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

Wdróż je 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 kopie zapasowe ważnych danych użytkowników, które chcesz przechowywać przez długi czas. które chcesz usuwać codziennie, możesz użyć 2 osobnych lub usuwać ręcznie za pomocą gsutil albo własnego serwera.

App Engine

App Engine to „platforma jako usługa” która automatycznie skaluje backend w odpowiedzi na natężenie ruchu. Wystarczy przesłać backend a jej dostępnością zarządza Google; brak serwerów dla które można udostępnić lub utrzymywać. App Engine to szybki i prosty sposób dodawania jeśli potrzebujesz dodatkowej mocy obliczeniowej lub zaufanego trybu wykonywania w aplikacji Firebase.

Pakiety SDK typu Firebase dla platformy Cloud Storage używają domyślnego zasobnika App Engine, co oznacza, że jeśli utworzysz aplikację App Engine, możesz użyć wbudowanej aplikacji App Engine Interfejsy API umożliwiające udostępnianie danych między Firebase a App Engine. Jest to przydatne w przypadku kodowanie audio, transkodowanie wideo i przekształcanie obrazu, jak inne procesy obliczeniowe w tle wymagające dużej mocy obliczeniowej.

Jawa, Python i go Środowiska standardowe dla App Engine uwzględnij interfejs App Engine Images API (Java, Python, który potrafi zmienić rozmiar, obrócić, odwrócić i przyciąć obraz, a także zwrócić adres URL wyświetlania który umożliwia przekształcanie po stronie klienta podobne do Cloudinary i Imgix.

Jeśli podczas importowania do Firebase istniejącego projektu Google Cloud chcesz wykonać udostępnić w Firebase istniejące obiekty App Engine, musisz ustawić domyślną kontrolę dostępu do obiektów, aby umożliwić Firebase dostęp do nich przez uruchom następujące polecenie przy użyciu 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ą 2 znane przypadki, w których nie możesz zaimportować aplikacji App Engine:

  1. Projekt zawiera były moduł nadrzędny/podrzędny App Engine Datastore .
  2. Projekt ma identyfikator projektu poprzedzony prefiksem domeny, na przykład: domain.com:project-1234

W żadnym z tych przypadków projekt nie będzie obsługiwać Cloud Storage for Firebase, i utwórz nowy projekt Firebase, Cloud Storage Skontaktuj się z zespołem pomocy , abyśmy mogli Ci w tym pomóc.

Google Cloud Functions (beta)

Google Cloud Functions to lekkie, asynchroniczne, oparte na zdarzeniach rozwiązanie obliczeniowe, które umożliwia tworzyć niewielkie, jednozadaniowe funkcje, które reagują na zdarzenia bez konieczności do zarządzania serwerem lub środowiskiem wykonawczym. Funkcji tych można używać do: transkodowanie filmów, klasyfikowanie obrazów za pomocą systemów uczących się lub synchronizacja za pomocą atrybutu Firebase Realtime Database. Przy kosztach jeszcze mniejszego niż App Engine, Cloud Functions to najszybszy sposób reagowania na zmiany w Cloud Storage

Google Cloud Vision API

Interfejs Google Cloud Vision API umożliwia pomaga zrozumieć zawartość obrazu dzięki umieszczaniu w nim zaawansowanych systemów uczących się w łatwym w obsłudze interfejsie API. Szybko klasyfikuje obrazy w: tysiące kategorii, wykrywa na zdjęciach pojedyncze obiekty i twarze, znajduje i odczytuje drukowane słowa zawarte w obrazach, identyfikuje obraźliwe słowa treści, a nawet analizować nastawienia dotyczące obrazów.

Google Cloud Speech API

Podobnie jak w przypadku Vision API, interfejs API Google Cloud Speech API umożliwia do wyodrębniania tekstu z pliku audio zapisanego w Cloud Storage. Rozpoznaje ponad 80 języków i wariantów, aby sprostać oczekiwaniom użytkowników na całym świecie wiele instalacji. W połączeniu z Google Cloud Natural Language API, mogą wyodrębniać nieprzetworzony tekst i określać jego znaczenie. Jeśli potrzebna jest grupa odbiorców globalna, można ją połączyć z Google Translate API do tłumaczenia tekst na ponad 90 języków.