Firebase używa kont usługi Google Cloud do obsługi usług i zarządzania nimi bez udostępniania danych logowania użytkownika. Podczas tworzenia projektu Firebase korzystającego 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 wsparcia Firebase .
Pod maską, zestawy SDK Firebase dla Cloud Storage korzystają z domyślnego zasobnika w warstwie bezpłatnej App Engine . Pozwala to szybko rozpocząć pracę 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 planie Blaze. Dowiedz się więcej o planach na naszej stronie z cennikiem .
Przechowywanie w chmurze Google
Interfejsów API Google Cloud Storage można używać do uzyskiwania dostępu do plików przesłanych za pośrednictwem pakietów SDK Firebase dla Cloud Storage, zwłaszcza w celu wykonywania bardziej złożonych operacji, takich jak kopiowanie lub przenoszenie pliku lub wyświetlanie wszystkich plików dostępnych w pliku referencyjnym.
Należy pamiętać, że żądania te korzystają z opcji kontroli dostępu Google Cloud Storage , a nie z uwierzytelniania Firebase i reguł bezpieczeństwa Cloud Storage.
Pszczoła
Oprócz pakietów Firebase SDK 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 kompatybilne z JSON
i S3 XML
RESTful API, lub jeśli potrzebujesz wprowadzić zmiany w skrypcie lub wykonać inne zadania administracyjne, mamy narzędzie wiersza poleceń, które przyda się.
Pakiety SDK serwera Google Cloud
Google Cloud oferuje wysokiej jakości serwerowe pakiety SDK 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ą platformy, do której link znajduje się powyżej.
Poniżej przedstawiono przykładowe użycie pakietu Google Cloud Storage SDK:
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 klienckiej, chcesz zrobić coś, czego nie robią biblioteki klienckie, lub po prostu masz ulubionego klienta HTTP, z którego wolisz korzystać, 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 masowej do zarządzania zasobnikami Cloud Storage na potrzeby projektów Firebase można używać 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
można wykonywać szeroki zakres 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 zmienianie nazw 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 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
Masowe 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 w celu osiągnięcia bardzo wysokich wskaźników żądań.
Google Cloud Storage to usługa dla wielu dzierżawców, 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ą, pomyśl o minimalnej częstotliwości żądań, której potrzebuje Twoja aplikacja, aby zapewnić dobrą wydajność, oraz o efektywnym wysyłaniu żądań. Zapoznaj się z wytycznymi dotyczącymi 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 tych kopii zapasowych. Możesz włączyć obsługę wersji obiektów za pomocą polecenia 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 innych 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 chcesz usunąć wszystkie zdjęcia 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ą 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ługi czas wraz ze zdjęciami, które chcesz codziennie usuwać, możesz użyć dwóch osobnych 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 zaplecza, a Google będzie zarządzać dostępnością Twojej aplikacji. nie ma serwerów, które można udostępniać lub utrzymywać. App Engine to szybki i łatwy sposób na dodanie dodatkowej mocy obliczeniowej lub zaufanego wykonywania aplikacji Firebase.
Pakiety Firebase SDK 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ń w tle.
Środowiska Java, Python i go Standard dla App Engine obejmują interfejs App Engine Images API ( Java , Python , który umożliwia zmianę rozmiaru, obracanie, odwracanie i przycinanie obrazu, a także zwracanie adresu URL służącego do wyświetlania obrazu, który umożliwia przekształcenia po stronie klienta , podobnie jak Cloudinary i Imgix.
Podczas importowania istniejącego projektu Google Cloud do Firebase, jeśli chcesz udostępnić dowolne istniejące obiekty App Engine w Firebase, 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:
- Projekt zawiera dawną aplikację App Engine Datastore Master/Slave.
- 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 musisz utworzyć nowy projekt Firebase, aby korzystać z Cloud Storage. 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, jednocelowych 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 za pomocą uczenia maszynowego lub synchronizowania metadanych z bazą danych czasu rzeczywistego Firebase. Dzięki jeszcze mniejszym narzutom niż App Engine, Cloud Functions to najszybszy sposób reagowania na zmiany w Cloud Storage.
Interfejs API Google Cloud Vision
Interfejs Google Cloud Vision API umożliwia programistom zrozumienie zawartości obrazu poprzez hermetyzację zaawansowanych modeli uczenia maszynowego w łatwym w obsłudze 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ę nastroju obrazu.
Google Cloud Speech API
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 Google Cloud Natural Language API programiści mogą zarówno wyodrębnić nieprzetworzony tekst, jak i wywnioskować znaczenie tego tekstu. A jeśli wymagana jest globalna publiczność, połącz to z Google Translate API , aby przetłumaczyć tekst na ponad 90 języków.