Google Cloud ile entegrasyon

Cloud Storage for Firebase, Google Cloud ile sıkı bir şekilde entegre edilmiştir. Cloud Storage için Firebase SDK'ları, dosyaları doğrudan Google Cloud Storage gruplarında depolar. Uygulamanız büyüdükçe, App Engine veya Cloud Functions gibi yönetilen bilgi işlem ya da Cloud Vision veya Google Çeviri gibi makine öğrenimi API'leri gibi diğer Google Cloud hizmetlerini kolayca entegre edebilirsiniz.

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 bununla ilgili 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ılavuzunu inceleyin.

Cloud Storage için Firebase SDK'ları, temelde App Engine ücretsiz katmanındaki varsayılan paketi kullanır. Bu sayede kredi kartı girmeniz veya Cloud Faturalandırma hesabı etkinleştirmeniz gerekmeden Cloud Storage'ı kısa sürede kullanmaya başlayabilirsiniz. Ayrıca, Firebase ile Google Cloud projesi arasında kolayca veri paylaşmanıza olanak tanır.

Mevcut Cloud Storage paketlerini içe aktarmak dahil olmak üzere, Google Cloud ile entegrasyon için Blaze planında bir Firebase projesi gerekir. Planlar hakkında daha fazla bilgiyi fiyatlandırma sayfamızda bulabilirsiniz.

Google Cloud Storage

Cloud Storage için Firebase SDK'ları aracılığıyla yüklenen dosyalara erişmek amacıyla Google Cloud Storage API'lerini kullanarak özellikle dosya kopyalama veya taşıma ya da referansta kullanılabilen tüm dosyaları listeleme gibi daha karmaşık işlemler gerçekleştirebilirsiniz.

Bu isteklerin Firebase Authentication ve Cloud Storage Güvenlik Kuralları yerine Google Cloud Storage erişim denetimi seçeneklerini kullandığını göz önünde bulundurun.

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 başka yolları da vardır. Verilere bir sunucu üzerinden erişiyorsanız JSON ve S3 uyumlu bir XML RESTful API'nin yanı sıra sunucu tarafı kitaplıklar da sunuyoruz. Komut dosyası değişiklikleri yapmanız veya diğer yönetim görevlerini gerçekleştirmeniz gerekiyorsa komut aracımız mevcuttur.

Google Cloud sunucu SDK'ları

Google Cloud, Cloud Storage dahil olmak üzere bazı bulut ürünleri için yüksek kaliteli sunucu SDK'ları sunar. Bu kitaplıklar Node.js, Java, go, Python, PHP ve Ruby'de kullanılabilir.

Yükleme talimatları, kimlik doğrulama ve sorun giderme gibi daha fazla bilgi için yukarıda bağlantısı verilen platforma özgü belgelere bakın.

Google Cloud Storage SDK'sı 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();
    

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

REST API

İstemci kitaplığı olmayan bir dil kullanıyorsanız, istemci kitaplıklarının yapmadığı bir işlem yapmak istiyorsanız veya kullanmayı tercih ettiğiniz bir HTTP istemcisi 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ım amacıyla Cloud Storage paketlerini yönetmek için Cloud Storage for Firebase API'yi kullanabilirsiniz.

gsutil

gsutil, Cloud Storage'a doğrudan erişim sağlayan bir komut satırı aracıdır. gsutil'ı çok çeşitli paket ve nesne yönetimi görevlerini gerçekleştirmek için kullanabilirsiniz. Örneğin:

  • Nesneleri yükleme, indirme ve silme.
  • Paketleri ve nesneleri listeleme.
  • Nesneleri taşıma, kopyalama ve yeniden adlandırma.
  • Nesne ve paket EKL'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 olanak tanır.

Dosyaları bir referanstan diğerine taşıyabilirsiniz:

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

Referansın altındaki tüm dosyaları toplu olarak silmek de benzer bir işlemdir:

# 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

Ücret İsteyin

Google Cloud Storage, çok yüksek istek oranlarına ulaşmak 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 aynı temel kaynak kümesini paylaşır. Paylaşılan bu kaynaklardan en iyi şekilde yararlanmak için paketlerin başlangıçtaki KS kapasitesi vardır.

Cloud Storage for Firebase'i uygulamanıza entegre etmeyi planlarken, uygulamanızın iyi bir performans göstermesi için ihtiyaç duyduğu minimum istek oranını ve verimli şekilde istekte bulunmayı düşünün. İstek oranları ve özellikle istek oranlarını artırma ile ilgili kuralları inceleyin.

Nesnede Sürüm Oluşturma

Bir şeyi yanlışlıkla sildiğiniz halde yedeğinizin olmadığı oldu mu? Google Cloud Storage, verilerinizi yedeklemek ve bu yedeklerden geri yüklemek için otomatik bir yol sağlayan Nesne Sürüm Oluşturma'yı destekler. gsutil versioning set komutunu kullanarak Nesnede Sürüm Oluşturma'yı 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 yukarıdaki diğer API'lerden veya araçlardan birini kullanarak istediğiniz nesneyi en yeni nesne olarak ayarlamanız gerekir.

Nesne Yaşam Döngüsü Yönetimi

Eski dosyaları otomatik olarak arşivleme veya silme yeteneği, birçok uygulama için yararlı bir özelliktir. Neyse ki Google Cloud Storage, nesneleri belirli bir süre sonra silmenize veya arşivlemenize olanak tanıyan Nesne Yaşam Döngüsü Yönetimi'ni sunar.

Tüm fotoğrafların bir gün içinde silinmesini istediğiniz bir fotoğraf paylaşım uygulaması düşünün. Aşağıdaki şekilde nesne yaşam döngüsü politikası oluşturabilirsiniz:

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

Ardından gsutil lifecycle set komutunu kullanarak dağıtın:

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, her gün silmek istediğiniz yan fotoğraflarla birlikte uzun süre saklamak istediğiniz önemli kullanıcı yedeklemelerini depoluyorsanız iki ayrı paket kullanmayı veya gsutil ya da kendi sunucunuzla manuel olarak silme işlemi gerçekleştirmeyi düşünebilirsiniz.

App Engine

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 sürdürmeniz gereken 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 da App Engine uygulaması derlerseniz Firebase ve App Engine arasında veri paylaşmak için yerleşik App Engine API'lerini kullanabileceğiniz anlamına gelir. Bu özellik; ses kodlama, video kod dönüştürme ve resim dönüştürme işlemlerinin yanı sıra yoğun hesaplama gerektiren arka plan işleme işlemleri için kullanışlıdır.

Java, Python ve App Engine için Standart ortamlar App Engine Images API'yi (Java, Python içerir. Resimleri yeniden boyutlandırabilir, döndürebilir, çevirebilir ve kırpabilir. Ayrıca, Cloudinary ve Imgix'e benzer şekilde istemci tarafı dönüştürmelere olanak tanıyan resim sunma URL'si döndürebilir).

Mevcut bir Google Cloud projesini Firebase'e aktarırken mevcut App Engine nesnelerini Firebase'de kullanılabilir hale getirmek istiyorsanız gsutil komutunu kullanarak aşağıdaki komutu çalıştırarak Firebase'in nesnelerinize erişebilmesi için 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 aktaramadığınız bilinen iki durum vardır:

  1. Proje, eski bir App Engine Datastore Ana/Yardımcı uygulaması içeriyor.
  2. Projede, alan adı önekli bir proje kimliği var. Örneğin: domain.com:project-1234.

Her iki durumda da proje Cloud Storage for Firebase'i desteklemez ve Cloud Storage'ı kullanmak için yeni bir Firebase projesi oluşturmanız gerekir. Size yardımcı olabilmemiz için destek ekibiyle iletişime geçin.

Google Cloud Functions (Beta)

Google Cloud Functions, bir sunucuyu veya bir çalışma zamanı ortamını yönetmeye gerek kalmadan etkinliklere yanıt veren küçük, tek amaçlı işlevler oluşturmanıza olanak tanıyan basit, olay tabanlı, eşzamansız bir bilgi işlem çözümüdür. Bu işlevler video kodunu dönüştürmek, makine öğrenimini kullanarak görüntüleri sınıflandırmak veya meta verileri Firebase Realtime Database ile senkronize etmek için kullanılabilir. App Engine'den daha az ek yüküyle Cloud Functions, Cloud Storage'daki değişikliklere tepki vermenin en hızlı yoludur.

Google Cloud Vision API

Google Cloud Vision API, kullanımı kolay bir API'de güçlü makine öğrenimi modellerini kapsüllerken geliştiricilerin bir görüntünün içeriğini anlamasına olanak tanır. Resimleri hızlı bir şekilde binlerce kategoriye ayırır, resimlerdeki nesneleri ve yüzleri ayrı ayrı tespit eder, resimlerdeki yazılı kelimeleri bulup okur, rahatsız edici içeriği tanımlar ve hatta görüntü yaklaşım analizi sağlar.

Google Cloud Speech API

Vision API'ye benzer şekilde Google Cloud Speech API, geliştiricilerin Cloud Storage'da depolanan bir ses dosyasından metin ayıklamasını sağlar. API, küresel kullanıcı tabanınızı desteklemek için 80'den fazla dili ve lehçeyi tanır. Google Cloud Natural Language API ile birlikte kullanıldığında, geliştiriciler hem ham metni ayıklayabilir hem de bu metinden anlam çıkarmak için çıkarım yapabilir. Küresel bir kitle gerekiyorsa metni 90'dan fazla dile çevirmek için bunu Google Çeviri API'si ile birlikte kullanın.