Firebase, kullanıcı kimlik bilgilerini paylaşmadan hizmetleri çalıştırmak ve yönetmek için Google Cloud hizmet hesaplarını kullanır. Cloud Storage kullanan bir Firebase projesi oluşturduğunuzda, projenizde karşılık gelen bir hizmet hesabının zaten mevcut olduğunu fark edebilirsiniz: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com
. Daha fazla bilgi için bu Firebase destek kılavuzuna bakın.
Gizli olarak, Cloud Storage için Firebase SDK'ları, App Engine ücretsiz katmanındaki varsayılan grubu kullanır. Bu, bir kredi kartı takmanız veya bir Bulut Faturalandırma hesabını etkinleştirmeniz gerekmeden Bulut Depolamayı hızlı bir şekilde kullanmaya başlamanıza olanak tanır. Ayrıca, Firebase ile bir Google Cloud projesi arasında kolayca veri paylaşmanıza olanak tanır.
Mevcut Cloud Storage paketlerini içe aktarma dahil olmak üzere Google Cloud ile entegrasyon, Blaze planında bir Firebase projesi gerektirir. Fiyatlandırma sayfamızdaki planlar hakkında daha fazla bilgi edinin.
Google Bulut Depolama
Cloud Storage için Firebase SDK'ları aracılığıyla yüklenen dosyalara erişmek, özellikle bir dosyayı kopyalamak veya taşımak veya bir referansta bulunan tüm dosyaları listelemek gibi daha karmaşık işlemleri gerçekleştirmek için Google Cloud Storage API'lerini kullanabilirsiniz.
Bu isteklerin Firebase Authentication ve Cloud Storage Güvenlik Kuralları yerine Google Cloud Storage erişim kontrolü seçeneklerini kullandığını unutmamak önemlidir.
API'ler
Cloud Storage için Firebase SDK'larına ek olarak, ne yapmak istediğinize bağlı olarak Cloud Storage grubunuzdaki verilere erişmenin başka yolları da vardır. Bir sunucudaki verilere erişiyorsanız, sunucu tarafı kitaplıklarının yanı sıra JSON
ve S3 uyumlu bir XML
RESTful API sunuyoruz veya değişiklikleri komut dosyası olarak yazmanız veya diğer yönetim görevlerini gerçekleştirmeniz gerekiyorsa, size yardımcı olacak bir komut satırı aracımız var. işe yarayacak
Google Cloud sunucu SDK'ları
Google Cloud, Cloud Storage dahil bir dizi bulut ürünü için yüksek kaliteli sunucu SDK'ları sunar. Bu kitaplıklar Node.js , Java , go , Python , PHP ve Ruby'de mevcuttur.
Kurulum talimatları, kimlik doğrulama ve sorun giderme dahil daha fazla bilgi için yukarıda bağlantısı verilen platforma özel belgelere bakın.
Google Cloud Storage SDK için örnek kullanım aşağıda gösterilmiştir:
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();
Gitmek
// 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) }
Piton
# 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');
Yakut
# 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}"
DİNLENME API'SI
İstemci kitaplığı olmayan bir dil kullanıyorsanız, istemci kitaplıklarının yapmadığını yapmak istiyorsanız veya yalnızca kullanmayı tercih edeceğiniz favori bir HTTP istemciniz varsa, Google Cloud Storage hem JSON hem de XML için API'ler sunar. .
Bu depolama verilerine erişim API'lerine ek olarak, Firebase projelerinde kullanılmak üzere Cloud Storage paketlerini yönetmek için Cloud Storage for Firebase API'sini kullanabilirsiniz.
gsutil
gsutil
, Cloud Storage'a doğrudan erişim sağlayan bir komut satırı aracıdır. Aşağıdakiler de dahil olmak üzere çok çeşitli klasör ve nesne yönetimi görevlerini gerçekleştirmek için gsutil
kullanabilirsiniz:
- Nesneleri yükleme, indirme ve silme.
- Kovaları ve nesneleri listeleme.
- Nesneleri taşıma, kopyalama ve yeniden adlandırma.
- Nesne ve grup ACL'lerini düzenleme.
gsutil
, dosyaları bir dizinden diğerine taşımak veya belirli bir konumun altındaki tüm dosyaları silmek gibi diğer gelişmiş işlemlere izin verir.
Tüm dosyaları bir referanstan diğerine taşımak şu kadar kolaydır:
gsutil mv gs://bucket/old/reference gs://bucket/new/reference
Bir referansın altındaki tüm dosyaları toplu olarak silmek de benzer şekilde sezgiseldir:
# 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
Talep Oranları
Google Cloud Storage, çok yüksek istek oranları elde etmek için otomatik ölçeklendirme teknolojisini kullanan, üst düzeyde ölçeklenebilir bir hizmettir.
Google Cloud Storage, çok kiracılı bir hizmettir, yani kullanıcılar aynı temel kaynakları paylaşır. Bu paylaşılan kaynaklardan en iyi şekilde yararlanmak için klasörlerin bir başlangıç G/Ç kapasitesi vardır.
Cloud Storage for Firebase'i uygulamanıza entegre etmeyi planlarken, uygulamanızın iyi performans için ihtiyaç duyduğu minimum istek oranını ve istekleri verimli şekilde yapmayı düşünün. Talep oranları ve özellikle talep oranlarını artırma hakkındaki yönergeleri gözden geçirin.
Nesne Sürümü Oluşturma
Hiç bir şeyi yanlışlıkla sildiğiniz ve yedeğiniz olmadığı oldu mu? Google Bulut Depolama, verilerinizi yedeklemek ve bu yedeklerden geri yüklemek için otomatik bir yol sağlayan Nesne Sürümü Oluşturmayı destekler. Nesne Sürüm Oluşturmayı gsutil
versioning set
komutunu kullanarak etkinleştirebilirsiniz:
gsutil versioning set on gs://<your-cloud-storage-bucket>
Cloud Storage her zaman en son sürümü alır, bu nedenle bir nesneyi geri yüklemek isterseniz istenen nesneyi en yeni sürüm olarak ayarlamak için yukarıdaki diğer API'lerden veya araçlardan birini kullanmanız gerekir.
Nesne Yaşam Döngüsü Yönetimi
Eski dosyaları otomatik olarak arşivleme veya silme yeteneğine sahip olmak, birçok uygulama için kullanışlı bir özelliktir. Şans eseri, Google Cloud Storage, nesneleri belirli bir süre sonra silmenize veya arşivlemenize olanak tanıyan Nesne Yaşam Döngüsü Yönetimi sağlar.
Tüm fotoğrafların bir gün içinde silinmesini istediğiniz bir fotoğraf paylaşım uygulaması düşünün. Bir nesne yaşam döngüsü ilkesini aşağıdaki gibi ayarlayabilirsiniz:
// lifecycle.json { "lifecycle": { "rule": [ { "action": {"type": "Delete"}, "condition": {"age": 1} } ] } }
Ve gsutil
lifecycle set
komutunu kullanarak dağıtın:
gsutil lifecycle set lifecycle.json gs://<your-cloud-storage-bucket>
Bunun gruptaki tüm dosyalar için geçerli olduğunu unutmayın; bu nedenle, günlük olarak silmek istediğiniz yan fotoğrafların yanında uzun süre saklamak istediğiniz önemli kullanıcı yedeklerini saklıyorsanız, iki ayrı grup kullanmak veya silme işlemlerini manuel olarak gerçekleştirmek isteyebilirsiniz. gsutil
veya kendi sunucunuzla.
Uygulama Motoru
App Engine, arka uç mantığını aldığı trafik miktarına göre otomatik olarak ölçeklendiren bir "Hizmet Olarak Platform"dur. Arka uç kodunuzu yüklemeniz yeterlidir; Google, uygulamanızın kullanılabilirliğini yönetir; sağlamanız veya bakımını yapmanız gereken sunucu yoktur. App Engine, Firebase uygulamanıza ek işlem gücü veya güvenilir yürütme eklemenin hızlı ve kolay bir yoludur.
Cloud Storage için Firebase SDK'ları, App Engine varsayılan grubunu kullanır; bu, bir App Engine uygulaması oluşturursanız Firebase ile App Engine arasında veri paylaşmak için yerleşik App Engine API'lerini kullanabileceğiniz anlamına gelir. Bu, ses kodlama, video kod çevrimi ve görüntü dönüşümlerinin yanı sıra diğer hesaplama yoğun arka plan işlemlerini gerçekleştirmek için kullanışlıdır.
App Engine için Java , Python ve go Standard ortamları , bir görüntüyü yeniden boyutlandırabilen, döndürebilen, çevirebilen ve kırpabilen ve ayrıca istemci tarafında dönüşümlere izin veren bir görüntü sunma URL'si döndürebilen App Engine Images API'yi ( Java , Python ) içerir , Cloudinary ve Imgix'e benzer.
Mevcut bir Google Cloud projesini Firebase'e aktarırken, mevcut herhangi bir App Engine nesnesini Firebase'de kullanılabilir hale getirmek istiyorsanız, gsutil
kullanarak aşağıdaki komutu çalıştırarak Firebase'in bu nesnelere erişmesine izin vermek için nesnelerinizdeki varsayılan erişim denetimini ayarlamanız gerekir. :
gsutil -m acl ch -r -u service-<project number;gt@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>
Bilinen Sorunlar
App Engine uygulamanızı içe aktaramayacağınız bilinen iki durum vardır:
- Proje, eski bir App Engine Datastore Master/Slave uygulamasını içeriyor.
- Projenin, etki alanı ön ekli bir proje kimliği vardır, örneğin:
domain.com:project-1234
.
Her iki durumda da proje Cloud Storage for Firebase'i desteklemeyecektir ve Cloud Storage'ı kullanmak için yeni bir Firebase projesi oluşturmalısınız. Size yardımcı olabilmemiz için desteğe başvurun .
Google Bulut İşlevleri (Beta)
Google Cloud Functions , bir sunucuyu veya çalışma zamanı ortamını yönetmeye gerek kalmadan olaylara yanıt veren küçük, tek amaçlı işlevler oluşturmanıza olanak tanıyan hafif, olay tabanlı, eşzamansız bir bilgi işlem çözümüdür. Bu işlevler, video kodunu dönüştürmek, makine öğrenimi kullanarak görüntüleri sınıflandırmak veya meta verileri Firebase Gerçek Zamanlı Veritabanı ile senkronize etmek için kullanılabilir. App Engine'den bile daha az ek yük ile Cloud Functions, Cloud Storage'daki değişikliklere tepki vermenin en hızlı yoludur.
Google Bulut Vizyon API'sı
Google Cloud Vision API, güçlü makine öğrenimi modellerini kullanımı kolay bir API'de kapsayarak geliştiricilerin bir görüntünün içeriğini anlamasını sağlar. Görüntüleri hızlı bir şekilde binlerce kategoriye ayırır, görüntülerdeki tek tek nesneleri ve yüzleri algılar, görüntülerde bulunan basılı sözcükleri bulur ve okur, rahatsız edici içeriği tanımlar ve hatta görüntü duyarlılık analizi sağlar.
Google Bulut Konuşma API'sı
Vision API'ye benzer şekilde Google Cloud Speech API , geliştiricilerin Cloud Storage'da depolanan bir ses dosyasından metin çıkarmasına olanak tanır. API, küresel kullanıcı tabanınızı desteklemek için 80'den fazla dili ve varyantı tanır. Google Cloud Natural Language API ile birleştirildiğinde, geliştiriciler hem ham metni çıkarabilir hem de bu metin hakkında anlam çıkarabilir. Ve eğer küresel bir kitle gerekiyorsa, metni 90'dan fazla dile çevirmek için bunu Google Translate API ile birleştirin.