Google Cloud ile entegre edin

Firebase için Cloud Storage, Google Cloud ile sıkı bir şekilde entegre edilmiştir. Cloud Storage için Firebase SDK'ları, dosyaları doğrudan Google Cloud Storage paketlerinde depolar ve uygulamanız büyüdükçe, App Engine veya Cloud Functions gibi yönetilen bilgi işlem veya Cloud Vision veya Google gibi makine öğrenimi API'leri gibi diğer Google Cloud hizmetlerini kolayca entegre edebilirsiniz. Ç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, projenizde 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ılavuzuna bakın.

Temel olarak Cloud Storage için Firebase SDK'ları, App Engine ücretsiz katmanındaki varsayılan paketi kullanır. Bu, kredi kartı takmanıza veya Bulut Faturalandırma hesabını etkinleştirmenize gerek kalmadan Bulut Depolamayı hızlı bir şekilde kurup çalıştırmanıza olanak tanır. Ayrıca Firebase ile bir Google Cloud projesi arasında kolayca veri paylaşmanıza da olanak tanır.

Mevcut Cloud Storage paketlerinin içe aktarılması da 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

Google Cloud Storage API'lerini , özellikle bir dosyayı kopyalamak veya taşımak ya da mevcut tüm dosyaları bir referansta listelemek gibi daha karmaşık işlemleri gerçekleştirmek amacıyla, Cloud Storage için Firebase SDK'ları aracılığıyla yüklenen dosyalara erişmek için 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 paketinizde depolanan verilere erişmenin birkaç başka yolu vardır. Bir sunucudaki verilere erişiyorsanız, JSON ve S3 uyumlu XML RESTful API'nin yanı sıra sunucu tarafı kitaplıkları da sunuyoruz veya komut dosyası değişiklikleri yapmanız veya diğer yönetim görevlerini gerçekleştirmeniz gerekiyorsa, size yardımcı olacak bir komut satırı aracımız var. kullanışlı olacaktır.

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 kütüphaneler 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'nın örnek kullanımı aşağıda gösterilmektedir:

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

İstemci kitaplığı olmayan bir dil kullanıyorsanız, istemci kitaplıklarının yapmadığı bir şeyi yapmak istiyorsanız veya yalnızca kullanmayı tercih ettiğ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'yi kullanabilirsiniz.

gsutil

gsutil , Bulut Depolamaya doğrudan erişmenizi sağlayan bir komut satırı aracıdır. gsutil aşağıdakiler de dahil olmak üzere çok çeşitli paket ve nesne yönetimi görevlerini gerçekleştirmek için kullanabilirsiniz:

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

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ın toplu olarak silinmesi 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 Bulut Depolama, ç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. Bu paylaşılan kaynaklardan en iyi şekilde yararlanmak için paketlerin bir başlangıç ​​IO 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 bir şekilde gerçekleştirmeyi düşünün. Talep oranlarına ve özellikle talep oranlarının artırılmasına ilişkin yönergeleri inceleyin.

Nesne Sürümü Oluşturma

Hiç yanlışlıkla bir şeyi sildiğiniz ve yedeğiniz olmadığı oldu mu? Google Cloud Storage, verilerinizi yedeklemenin ve bu yedeklerden geri yüklemenin otomatik bir yolunu sağlayan Nesne Sürümü Oluşturmayı destekler. gsutil versioning set komutunu kullanarak Nesne Sürümü Oluşturmayı etkinleştirebilirsiniz:

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

Cloud Storage her zaman en yeni sürümü alır; dolayısıyla bir nesneyi geri yüklemek istiyorsanız 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. Neyse ki Google Bulut Depolama, nesneleri belirli bir süre sonra silmenize veya arşivlemenize olanak tanıyan Nesne Yaşam Döngüsü Yönetimi'ni sağlar.

Tüm fotoğrafların bir gün içerisinde 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 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ğraflarla birlikte saklıyorsanız, iki ayrı paket kullanmak veya silme işlemini manuel olarak gerçekleştirmek isteyebilirsiniz. gsutil veya kendi sunucunuzla.

Uygulama Motoru

App Engine, aldığı trafik miktarına yanıt olarak arka uç mantığını otomatik olarak ölçeklendiren bir "Hizmet Olarak Platform"dur. Arka uç kodunuzu yüklemeniz yeterli; Google, uygulamanızın kullanılabilirliğini yönetecektir; sağlamanız veya bakımını yapmanız gereken hiçbir sunucu yok. App Engine, Firebase uygulamanıza ek işlem gücü veya güvenilir yürütme eklemenin hızlı ve kolay bir yoludur.

Bulut Depolama 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 kodlama, video kod dönüştürme ve görüntü dönüştürmelerin 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 Standart ortamları , bir görüntüyü yeniden boyutlandırabilen, döndürebilen, çevirebilen ve kırpabilen ve aynı zamanda istemci tarafında dönüşümlere izin veren bir görüntü sunma URL'si döndürebilen App Engine Görüntü API'sini ( Java , Python) içerir. Cloudinary ve Imgix'e benzer.

Mevcut bir Google Cloud projesini Firebase'e aktarırken, mevcut herhangi bir App Engine nesnesinin Firebase'de kullanılabilir olmasını istiyorsanız, gsutil kullanarak aşağıdaki komutu çalıştırarak Firebase'in nesnelere erişmesine izin vermek için nesneleriniz üzerinde varsayılan erişim kontrolünü 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 Master/Slave uygulamasını içeriyor.
  2. Projenin alan adı öneki olan bir proje kimliği vardır; ö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 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 videonun kodunu dönüştürmek, makine öğrenimini kullanarak görüntüleri sınıflandırmak veya meta verileri Firebase Gerçek Zamanlı Veritabanıyla senkronize etmek için kullanılabilir. App Engine'den bile daha az ek yüke sahip olan Cloud Functions, Cloud Storage'daki değişikliklere tepki vermenin en hızlı yoludur.

Google Cloud Vision API'si

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 anlamalarına olanak tanır. Görüntüleri hızlı bir şekilde binlerce kategoriye ayırır, görüntüler içindeki bireysel nesneleri ve yüzleri algılar, görüntülerin içerdiği basılı kelimeleri 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'si

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 çeşidini tanır. Geliştiriciler, Google Cloud Natural Language API ile birleştirildiğinde hem ham metni çıkarabilir hem de bu metinden anlam çıkarabilir. Küresel bir kitle gerekiyorsa metni 90'dan fazla dile çevirmek için bunu Google Çeviri API'sıyla birleştirin.