Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Integrasikan dengan Google Cloud

Cloud Storage for Firebase terintegrasi erat dengan Google Cloud . Firebase SDK untuk Cloud Storage menyimpan file langsung di keranjang Google Cloud Storage , dan seiring pertumbuhan aplikasi, Anda dapat dengan mudah mengintegrasikan layanan Google Cloud lainnya, seperti komputasi terkelola seperti App Engine atau Cloud Functions, atau API pembelajaran mesin seperti Cloud Vision atau Google Menerjemahkan.

Firebase menggunakan akun layanan Google Cloud untuk mengoperasikan dan mengelola layanan tanpa membagikan kredensial pengguna. Saat membuat proyek Firebase yang menggunakan Cloud Storage, Anda mungkin melihat bahwa akun layanan yang sesuai sudah tersedia di proyek Anda: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Lihat panduan dukungan Firebase ini untuk informasi selengkapnya.

Di bawah tenda, SDK Firebase untuk Cloud Storage menggunakan bucket default di tingkat tanpa biaya App Engine . Hal ini memungkinkan Anda untuk segera memulai dan menjalankan Cloud Storage, tanpa harus memasukkan kartu kredit atau mengaktifkan akun Penagihan Cloud. Ini juga memungkinkan Anda berbagi data dengan mudah antara Firebase dan proyek Google Cloud.

Mengintegrasikan dengan Google Cloud, termasuk mengimpor bucket Cloud Storage yang ada, memerlukan project Firebase pada paket Blaze. Pelajari lebih lanjut tentang paket di halaman harga kami.

Penyimpanan Google Cloud

Anda dapat menggunakan Google Cloud Storage API untuk mengakses file yang diunggah melalui SDK Firebase untuk Cloud Storage, terutama untuk melakukan operasi yang lebih kompleks, seperti menyalin atau memindahkan file, atau membuat daftar semua file yang tersedia di referensi.

Penting untuk diperhatikan bahwa permintaan ini menggunakan opsi kontrol akses Google Cloud Storage , bukan Aturan Keamanan Firebase Authentication dan Cloud Storage.

Lebah

Selain Firebase SDK untuk Cloud Storage, ada sejumlah cara lain untuk mengakses data yang disimpan di bucket Cloud Storage Anda, bergantung pada apa yang ingin Anda lakukan. Jika Anda mengakses data di server, kami menawarkan pustaka sisi server, serta XML RESTful API yang kompatibel dengan JSON dan S3, atau jika Anda perlu mengubah skrip atau melakukan tugas administratif lainnya, kami memiliki alat baris perintah yang akan berguna.

SDK server Google Cloud

Google Cloud menawarkan SDK server berkualitas tinggi untuk sejumlah produk cloud, termasuk Cloud Storage. Pustaka ini tersedia di Node.js , Java , go , Python , PHP , dan Ruby .

Untuk informasi lebih lanjut, termasuk petunjuk penginstalan, autentikasi, dan pemecahan masalah, lihat dokumentasi khusus platform yang ditautkan di atas.

Contoh penggunaan untuk Google Cloud Storage SDK ditunjukkan di bawah ini:

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();
    

Pergi

    // 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');
    

Rubi

    # 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

Jika Anda menggunakan bahasa tanpa pustaka klien, ingin melakukan sesuatu yang tidak dilakukan pustaka klien, atau hanya memiliki klien HTTP favorit yang ingin Anda gunakan, Google Cloud Storage menawarkan API untuk JSON dan XML .

Selain API akses data penyimpanan ini, untuk mengelola bucket Cloud Storage untuk digunakan dalam proyek Firebase, Anda dapat menggunakan Cloud Storage for Firebase API .

gsutil

gsutil adalah alat baris perintah yang memberi Anda akses langsung ke Cloud Storage. Anda dapat menggunakan gsutil untuk melakukan berbagai tugas pengelolaan bucket dan objek, termasuk:

  • Mengunggah, mengunduh, dan menghapus objek.
  • Mencantumkan bucket dan objek.
  • Memindahkan, menyalin, dan mengganti nama objek.
  • Mengedit objek dan ACL bucket.

gsutil memungkinkan operasi lanjutan lainnya, seperti memindahkan file dari satu direktori ke direktori lain, atau menghapus semua file di bawah lokasi tertentu.

Memindahkan semua file dari satu referensi ke referensi lain semudah:

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

Menghapus batch semua file di bawah referensi juga intuitif:

# 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

Permintaan Tarif

Google Cloud Storage adalah layanan yang sangat skalabel yang menggunakan teknologi penskalaan otomatis untuk mencapai tingkat permintaan yang sangat tinggi.

Google Cloud Storage adalah layanan multi-penyewa, artinya pengguna berbagi kumpulan sumber daya dasar yang sama. Untuk memanfaatkan sumber daya bersama ini sebaik mungkin, bucket memiliki kapasitas IO awal.

Saat Anda berencana untuk mengintegrasikan Cloud Storage for Firebase ke dalam aplikasi Anda, pikirkan tentang tingkat permintaan minimum yang dibutuhkan aplikasi Anda untuk kinerja yang baik, dan tentang membuat permintaan secara efisien. Tinjau pedoman tentang tingkat permintaan , dan khususnya tingkatkan tingkat permintaan .

Pembuatan Versi Objek

Pernahkah Anda menghapus sesuatu secara tidak sengaja dan tidak memiliki cadangan? Google Cloud Storage mendukung Pembuatan Versi Objek , yang menyediakan cara otomatis untuk mencadangkan data Anda, dan memulihkan dari cadangan tersebut. Anda dapat mengaktifkan Object Versioning menggunakan perintah gsutil versioning set :

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

Cloud Storage selalu mengambil versi terbaru, jadi jika Anda ingin memulihkan objek, Anda perlu menggunakan salah satu API atau alat lain di atas untuk menyetel objek yang diinginkan sebagai yang terbaru.

Manajemen Siklus Hidup Objek

Memiliki kemampuan untuk mengarsipkan atau menghapus file basi secara otomatis adalah fitur yang berguna untuk banyak aplikasi. Untungnya, Google Cloud Storage menyediakan Object Lifecycle Management , yang memungkinkan Anda menghapus atau mengarsipkan objek setelah jangka waktu tertentu.

Pertimbangkan aplikasi berbagi foto yang Anda ingin semua foto dihapus dalam satu hari. Anda dapat menyiapkan kebijakan siklus hidup objek sebagai berikut:

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

Dan terapkan menggunakan perintah lifecycle set gsutil :

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

Perhatikan bahwa ini berlaku untuk semua file dalam keranjang, jadi jika Anda menyimpan cadangan pengguna penting yang ingin Anda simpan untuk waktu yang lama di sepanjang foto samping yang ingin Anda hapus setiap hari, Anda mungkin ingin menggunakan dua keranjang terpisah atau melakukan penghapusan secara manual dengan gsutil atau server Anda sendiri.

Mesin Aplikasi

App Engine adalah "Platform sebagai Layanan" yang secara otomatis menskalakan logika backend sebagai respons terhadap jumlah lalu lintas yang diterimanya. Cukup unggah kode backend Anda dan Google akan mengelola ketersediaan aplikasi Anda; tidak ada server untuk Anda sediakan atau pelihara. App Engine adalah cara cepat dan mudah untuk menambahkan kekuatan pemrosesan tambahan atau eksekusi tepercaya ke aplikasi Firebase Anda.

SDK Firebase untuk Cloud Storage menggunakan bucket default App Engine, yang berarti bahwa jika Anda membuat aplikasi App Engine, Anda dapat menggunakan API App Engine bawaan untuk berbagi data antara Firebase dan App Engine. Ini berguna untuk melakukan encoding audio, transcoding video, dan transformasi gambar, serta pemrosesan latar belakang intensif komputasi lainnya.

Lingkungan Java, Python, dan go Standar untuk App Engine menyertakan API Gambar App Engine ( Java , Python , yang dapat mengubah ukuran, memutar, membalik, dan memotong gambar, serta mengembalikan URL penyajian gambar yang memungkinkan transformasi sisi klien , mirip dengan Cloudinary dan Imgix.

Saat mengimpor proyek Google Cloud yang ada ke Firebase, jika Anda ingin membuat objek App Engine yang ada tersedia di Firebase, Anda harus menyetel kontrol akses default pada objek Anda untuk mengizinkan Firebase mengaksesnya dengan menjalankan perintah berikut menggunakan gsutil :

gsutil -m acl ch -r -u service-<project number;gt@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

Masalah Dikenal

Ada dua kasus yang diketahui saat Anda tidak dapat mengimpor aplikasi App Engine:

  1. Proyek ini berisi aplikasi App Engine Datastore Master/Slave sebelumnya.
  2. Proyek memiliki ID proyek awalan domain, misalnya: domain.com:project-1234 .

Dalam salah satu kasus ini, proyek tidak akan mendukung Cloud Storage for Firebase, dan Anda harus membuat proyek Firebase baru untuk menggunakan Cloud Storage. Hubungi dukungan agar kami dapat membantu Anda.

Fungsi Google Cloud (Beta)

Google Cloud Functions adalah solusi komputasi asinkron yang ringan, berbasis peristiwa, yang memungkinkan Anda membuat fungsi kecil dengan satu tujuan yang merespons peristiwa tanpa perlu mengelola server atau lingkungan waktu proses. Fungsi-fungsi ini dapat digunakan untuk mentranskode video, mengklasifikasikan gambar menggunakan pembelajaran mesin, atau menyinkronkan metadata dengan Firebase Realtime Database. Dengan overhead yang bahkan lebih sedikit daripada App Engine, Cloud Functions adalah cara tercepat untuk bereaksi terhadap perubahan di Cloud Storage.

API Google Cloud Vision

Google Cloud Vision API memungkinkan developer memahami konten gambar dengan merangkum model pembelajaran mesin yang andal dalam API yang mudah digunakan. Dengan cepat mengklasifikasikan gambar ke dalam ribuan kategori, mendeteksi objek dan wajah individu dalam gambar, menemukan dan membaca kata-kata tercetak yang terkandung dalam gambar, mengidentifikasi konten yang menyinggung, dan bahkan menyediakan analisis sentimen gambar.

API Ucapan Google Cloud

Mirip dengan Vision API, Google Cloud Speech API memungkinkan developer mengekstrak teks dari file audio yang disimpan di Cloud Storage. API mengenali lebih dari 80 bahasa dan varian, untuk mendukung basis pengguna global Anda. Saat digabungkan dengan Google Cloud Natural Language API , pengembang dapat mengekstrak teks mentah dan menyimpulkan makna tentang teks tersebut. Dan jika audiens global diperlukan, pasangkan ini dengan Google Translate API untuk menerjemahkan teks ke 90+ bahasa.