Catch up on everthing we announced at this year's Firebase Summit. Learn more

Google Cloud ile entegre edin

Firebase için Bulut Depolama sıkıca entegre edilmiştir Google Cloud . Firebase doğrudan Bulut Depolama mağaza dosyaları için SDK'leri Google Bulut Depolama kovalar ve uygulamanızın büyüdükçe, kolayca bu tür Bulut Vision veya Google gibi App Engine veya Cloud Fonksiyonlar veya makine öğrenme API'leri gibi yönetilen bilgi işlem gibi diğer Google Cloud hizmetlerini, entegre edebilir Çevirmek.

Firebase, hizmetleri kullanıcı kimlik bilgilerini paylaşmadan çalıştırmak ve yönetmek için Google Cloud hizmet hesaplarını kullanır. Cloud Storage kullanan bir Firebase projesi oluşturduğunuzda, karşılık gelen hizmet hesabı projenizde zaten mevcut olduğunu fark edebilirsiniz: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Bu bak Firebase destek kılavuzunu fazla bilgi için.

Kaputun altında, Cloud Storage için Firebase SDK'ler varsayılan kova kullanmak App Engine ücretsiz katman. Bu, bir kredi kartı girmenize veya bir Bulut Faturalandırma hesabını etkinleştirmenize gerek kalmadan Cloud Storage ile hızlı bir şekilde çalışmaya 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 aktarmak da dahil olmak üzere Google Cloud ile entegrasyon, Blaze planında bir Firebase projesi gerektirir. Bizim üzerinde planları hakkında daha fazla bilgi , fiyatlandırma sayfası .

Google Bulut Depolama

Sen kullanabilirsiniz Google Bulut Depolama API'leri böyle kopyalayarak veya bir dosya taşıma ya da bir referans mevcut tüm dosyaları listeleme gibi daha karmaşık işlemleri gerçekleştirmek için özellikle Cloud Storage için Firebase SDK'larını yüklenen erişim dosyalarına.

Bu istekler, Google Cloud Storage kullandığını unutmamak gerekir erişim kontrol seçeneklerini oldukça Firebase Kimlik ve Bulut Depolama Güvenliği Kuralları yerine,.

API'ler

Cloud Storage için Firebase SDK'larına ek olarak, ne yapmak istediğinize bağlı olarak Cloud Storage paketinizde depolanan verilere erişmenin birkaç başka yolu vardır. Eğer bir sunucu üzerinde verilerine erişmek veremiyorsanız, sunucu tarafında kütüphaneler, hem de bir teklif JSON ve S3 uyumlu XML RESTful API veya komut değişikliklerine ihtiyaç veya diğer idari görevleri gerçekleştirmek, biz bir komut satırı aracı olduğunu var işe yarayacak.

Google Cloud sunucu SDK'ları

Google Cloud, Cloud Storage dahil olmak üzere bir dizi bulut ürünü için yüksek kaliteli sunucu SDK'ları sunar. Bu kütüphaneler mevcuttur node.js , Java , go , Python , PHP ve Ruby .

Kurulum talimatları, kimlik doğrulama ve sorun giderme dahil olmak üzere 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}"
    

REST API'si

Bir istemci kütüphanesi olmadan bir dil kullanarak ediyorsanız kullanımına ikisi için Google Cloud Storage teklifler API'leri tercih ediyorum o istemci kütüphaneleri yapmak, ya da sadece bir favori HTTP istemcisi yok bir şey yapmak istiyorum JSON ve XML .

Bu depolama veri erişim API'leri ek olarak, kullanabilirsiniz, Firebase projelerde kullanılacak Bulut Depolama kovalar yönetmek için Firebase API için Cloud Storage .

gsutil

gsutil size Cloud Storage doğrudan erişim sağlayan bir komut satırı aracıdır. Sen kullanabilirsiniz gsutil kova ve nesne yönetim görevleri de dahil olmak üzere geniş bir yelpazede yapmak:

  • Nesneleri yükleme, indirme ve silme.
  • Paketleri ve nesneleri listeleme.
  • Nesneleri taşıma, kopyalama ve yeniden adlandırma.
  • Nesne ve paket ACL'lerini düzenleme.

gsutil böyle başka bir dizinden dosya taşıma veya belirli bir yerde altındaki tüm dosyaları silme gibi diğer gelişmiş işlemler için izin verir.

Başka bir referanstan tüm dosyaları taşıma kadar kolaydır olarak:

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

Bir referans altındaki tüm dosyaları silerek Toplu benzer sezgisel:

# 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

Fiyat Talep Et

Google Cloud Storage, çok yüksek istek oranları elde etmek için otomatik ölçeklendirme teknolojisini kullanan, yüksek düzeyde ölçeklenebilir bir hizmettir.

Google Cloud Storage, çok kiracılı bir hizmettir, yani kullanıcıların aynı temel kaynak grubunu paylaştığı anlamına gelir. Bu paylaşılan kaynaklardan en iyi şekilde yararlanmak için paketlerin bir başlangıç ​​GÇ kapasitesi vardır.

Firebase için Cloud Storage'ı uygulamanıza entegre etmeyi planlarken, iyi performans için uygulamanızın ihtiyaç duyduğu minimum istek oranını ve istekleri verimli bir şekilde yapma hakkında düşünün. Hakkında İnceleme kurallar istek oranları ve özellikle istek oranlarını sertleştiriyor .

Nesne Sürüm Oluşturma

Hiç bir şeyi yanlışlıkla sildiniz ve yedeğiniz olmadı mı? Google Bulut Depolama destekler Versioning Nesne bu yedeklerden verilerinizi yedeklemek ve geri yüklemek için otomatik bir yol sağlar. Sen kullanarak Sürüm Oluşturma Nesne etkinleştirebilirsiniz gsutil versioning set komutu:

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

Cloud Storage her zaman en yeni sürümü alır, bu nedenle bir nesneyi geri yüklemek istiyorsanız, istenen nesneyi en yeni 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 özelliğine sahip olmak, birçok uygulama için kullanışlı bir özelliktir. Neyse ki, Google Cloud Storage sağlar Nesne Ömrü Yönetimi Eğer belli bir süre sonra silmek veya arşiv nesneleri 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 kullanarak dağıtmak gsutil lifecycle set komutunu:

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

Bunun paketteki tüm dosyalar için geçerli olduğunu unutmayın; bu nedenle, uzun süre saklamak istediğiniz önemli kullanıcı yedeklerini günlük olarak silmek istediğiniz yan fotoğrafların yanında saklıyorsanız, iki ayrı paket kullanmak veya manuel olarak silme yapmak isteyebilirsiniz. ile gsutil veya kendi sunucusunda.

Uygulama Motoru

App Engine, aldığı trafik miktarına göre arka uç mantığını otomatik olarak ölçekleyen bir "Hizmet Olarak Platform"dur. Arka uç kodunuzu yüklemeniz yeterlidir; Google, uygulamanızın kullanılabilirliğini yönetecektir; sağlamanız veya bakımını yapmanız için hiçbir 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 paketini 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 kodlaması, video kodlaması ve görüntü dönüştürmelerinin yanı sıra diğer yoğun hesaplamalı arka plan işleme işlemlerini gerçekleştirmek için kullanışlıdır.

Java, Python, ve gidin Standart ortamlar App Engine App Engine Görüntüler API (dahil Java , Python , yeniden boyutlandırma, döndürme, çevirme ve bir resmi kesmek, hem de istemci tarafı dönüşümleri için izin veren bir görüntü sunan bir URL döndürebilir, , Cloudinary ve Imgix'e benzer.

Mevcut tüm App Engine Firebase mevcut nesneleri yapmak istiyorsanız, Firebase içine varolan Google Bulut projesini içe aktarırken, kullanarak aşağıdaki komutu çalıştırarak onlara erişmek için Firebase izin vermek için nesneler üzerinde varsayılan erişim kontrolünü ayarlamak gerekir gsutil :

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:

  1. Proje, eski bir App Engine Datastore Master/Slave uygulaması içeriyor.
  2. : Proje örneğin bir alanı öneki proje kimliğine sahip domain.com:project-1234 .

Bu iki durumda da proje, Firebase için Cloud Storage'ı desteklemeyecektir ve Cloud Storage'ı kullanmak için yeni bir Firebase projesi oluşturmalısınız. Desteğe biz size yardımcı olabilir böylece.

Google Bulut İşlevleri (Beta)

Google Bulut İşlevleri Eğer gerek kalmadan olaylara yanıt bir sunucu veya bir yürütme ortamı yönetmek için bu küçük, tek amaçlı işlevler oluşturmak sağlayan hafif, olay tabanlı, asenkron hesaplama çözümdür. Bu işlevler, videoyu dönüştürmek, makine öğrenimini kullanarak görüntüleri sınıflandırmak veya Firebase Realtime Database ile meta verileri senkronize etmek için kullanılabilir. App Engine'den bile daha az ek yükü olan Cloud Functions, Cloud Storage'daki değişikliklere tepki vermenin en hızlı yoludur.

Google Bulut Vizyon API'sı

Google Bulut Vision API kullanımı API için kolay bir öğrenme modellerinin güçlü bir makine enkapsüle bir görüntünün içeriğini anlamak için geliştiriciler sağlar. Görüntüleri hızla 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ığı analizi sağlar.

Google Bulut Konuşma API'sı

Vizyon API benzer şekilde, Google Bulut Speech API Bulut Depolama saklanan bir ses dosyasından ayıklamak metin aktarmalarını sağlar. API, küresel kullanıcı tabanınızı desteklemek için 80'den fazla dili ve varyantı tanır. İle birlikte kullanıldığında , Google Cloud Doğal Dil API , geliştiriciler can hem özü o metin hakkında ham metin ve anlaması anlamı. Küresel kitlelerini gerekiyorsa Ve, ile çift bu Google Translate API 90 + dilde metin çevirmek için.