Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Integrasi dengan Google Cloud

Cloud Storage for Firebase terintegrasi erat dengan Google Cloud. Firebase SDK untuk Cloud Storage menyimpan file langsung di bucket Google Cloud Storage, dan seiring dengan perkembangan aplikasi, Anda dapat mengintegrasikan layanan Google Cloud lainnya dengan mudah, misalnya komputasi terkelola seperti App Engine atau Cloud Functions, atau API machine learning seperti Cloud Vision atau Google Terjemahan.

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

Pada prinsipnya, Firebase SDK untuk Cloud Storage menggunakan bucket default di paket gratis Google App Engine. Dengan demikian, Anda dapat menyiapkan dan menjalankan Google Cloud Storage dengan cepat, tanpa harus memasukkan kartu kredit atau mengaktifkan akun penagihan. Selain itu, Anda juga dapat menggunakan data yang sama antara Firebase dan project Google Cloud.

Integrasi dengan Google Cloud, termasuk mengimpor bucket Cloud Storage yang ada, memerlukan project Firebase dengan paket Blaze. Pelajari paketnya lebih lanjut di halaman harga.

Google Cloud Storage

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

Penting untuk diketahui bahwa permintaan ini menggunakan opsi kontrol akses Google Cloud Storage, bukan Autentikasi dan Aturan Keamanan Penyimpanan Firebase.

API

Selain Firebase SDK untuk Cloud Storage, ada beberapa cara lain untuk mengakses data yang tersimpan di bucket Google Cloud Storage Anda, bergantung pada hal yang ingin Anda lakukan. Jika Anda mengakses data di server, kami menawarkan library sisi server, serta JSON dan RESTful API XML yang kompatibel dengan S3, atau jika Anda perlu menuliskan skrip perubahan atau melakukan tugas administratif lainnya, kami memiliki alat command line yang akan berguna.

Google-Cloud Server SDK

Google Cloud menawarkan SDK server berkualitas tinggi untuk sejumlah produk cloud, termasuk Cloud Storage. Library ini tersedia di Node.js, Java, go, Python, PHP, dan Ruby. Untuk mengetahui informasi lebih lanjut, termasuk petunjuk instal, autentikasi, dan pemecahan masalah, baca dokumen khusus platform yang tertaut.

Contoh penggunaan untuk Google Cloud SDK ditunjukkan di bawah ini:

Node.js

    // Require gcloud
    var gcloud = require('google-cloud');

    // Enable 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 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 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 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 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 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 library klien, ingin melakukan sesuatu yang tidak dilakukan library klien, atau hanya memiliki klien HTTP favorit yang ingin Anda gunakan, Cloud Storage menawarkan JSON dan XML API yang dapat Anda gunakan.

gsutil

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

  • Mengupload, mendownload, dan menghapus objek.
  • Mencantumkan bucket dan objek.
  • Memindahkan, menyalin, dan mengganti nama objek.
  • Mengedit ACL objek dan bucket.

gsutil dapat dipanggil untuk melakukan operasi lanjutan lain, 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 dapat dilakukan semudah:

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

Menghapus sekaligus semua file di bawah referensi sama intuitifnya:

# 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

Pembuatan Versi Objek

Pernah menghapus sesuatu secara tidak disengaja dan tidak memiliki backup-nya? Pembuatan Versi Objek Cloud Storage menyediakan cara otomatis untuk membuat cadangan data Anda, dan memulihkan data dari cadangan tersebut. Anda dapat mengaktifkan Pembuatan Versi Objek menggunakan perintah gsutil versioning set:

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

Firebase Storage selalu memilih versi terbaru. Jadi, jika ingin memulihkan objek, Anda harus menggunakan salah satu API lain atau alat di atas untuk menyetel objek yang diinginkan sebagai versi terbaru.

Pengelolaan Siklus Proses Objek

Memiliki kemampuan mengarsipkan dan menghapus file usang secara otomatis adalah fitur yang berguna bagi banyak aplikasi. Untungnya, Cloud Storage menyediakan Pengelolaan Siklus Proses Objek, yang dapat digunakan untuk menghapus atau mengarsipkan objek setelah waktu tertentu.

Bayangkan sebuah aplikasi berbagi foto, dan Anda ingin menghapus semua foto dalam sehari. Anda dapat menyiapkan kebijakan siklus proses objek sebagai berikut:

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

Dan men-deploy-nya menggunakan perintah gsutil lifecycle set:

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

Perhatikan bahwa ini berlaku untuk semua file dalam bucket, sehingga jika Anda menyimpan cadangan data pengguna penting yang ingin Anda simpan untuk waktu yang lama beserta foto, Anda dapat menggunakan dua bucket terpisah atau melakukan penghapusan secara manual dengan gsutil atau server Anda sendiri.

Google App Engine

Google App Engine adalah "Platform sebagai Layanan" yang secara otomatis menskalakan logika backend sebagai respons terhadap jumlah traffic yang diterimanya. Cukup upload kode backend Anda dan Google akan mengelola ketersediaan aplikasi. Anda tidak perlu menyediakan atau memelihara server. App Engine adalah cara cepat dan mudah untuk menambahkan daya pemrosesan atau eksekusi tepercaya tambahan ke aplikasi Firebase Anda.

Firebase SDK untuk Cloud Storage menggunakan bucket default Google App Engine, artinya jika Anda membuat aplikasi App Engine, Anda dapat menggunakan App Engine API bawaan untuk membagi data antara Firebase dan App Engine. Hal ini berguna untuk melakukan encoding audio, transcoding video, dan transformasi gambar, serta pemrosesan latar belakang intensif komputasi lainnya.

Lingkungan standar Java, Python, dan Go untuk Google App Engine mencakup GAE Images API (Java, Python), yang dapat mengubah ukuran, memutar, membalik, dan memangkas gambar, serta menampilkan URL penyajian gambar. Dengan demikian, transformasi sisi klien dapat dilakukan, serupa dengan Cloudinary dan Imgix.

Ketika mengimpor project Google Cloud yang ada ke Firebase, jika ingin objek App Engine ada 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 Umum

Ada dua masalah umum yang menyebabkan Anda tidak dapat mengimpor aplikasi GAE:

  1. Project tersebut berisi aplikasi App Engine Datastore Master/Slave sebelumnya.
  2. Project tersebut memiliki project ID berawalan domain, misalnya: domain.com:project-1234.

Dalam salah satu kasus ini, project tidak akan mendukung Google Cloud Storage for Firebase, dan Anda harus membuat project Firebase baru agar dapat menggunakan Cloud Storage. Harap hubungi dukungan agar kami dapat membantu Anda.

Google Cloud Functions (Beta)

Google Cloud Functions adalah solusi komputasi ringan, berbasis peristiwa, dan bersifat asinkron yang dapat digunakan untuk membuat berbagai fungsi kecil dengan satu tujuan, yang merespons peristiwa tanpa perlu mengelola server atau lingkungan waktu proses. Fungsi-fungsi ini dapat digunakan untuk melakukan transcoding video, mengklasifikasikan gambar menggunakan machine learning, atau menyinkronkan metadata dengan Firebase Realtime Database. Dengan overhead yang lebih sedikit daripada Google App Engine, Cloud Functions adalah cara tercepat untuk bereaksi terhadap perubahan dalam Firebase Storage.

Google Cloud Vision API

Google Cloud Vision API dapat digunakan developer untuk memahami konten gambar dengan mencakup model machine learning yang ampuh secara mudah untuk menggunakan API. Google Cloud Vision API mengklasifikasikan gambar secara cepat ke dalam ribuan kategori, mendeteksi masing-masing objek dan wajah di dalam gambar, menemukan dan membaca kata-kata tercetak yang berada di dalam gambar, mengidentifikasi konten yang bersifat menyinggung, dan bahkan memberikan analisis sentimen gambar.

Google Cloud Speech API

Seperti halnya Vision API, Google Cloud Speech API dapat digunakan developer untuk mengekstrak teks dari file audio yang disimpan di Cloud Storage. API tersebut mengenali lebih dari 80 bahasa dan varian, untuk mendukung basis pengguna global Anda. Jika fitur ini dipadukan dengan Google Cloud Natural Language API, developer dapat mengekstrak teks mentah dan menyimpulkan arti teks tersebut. Dan jika diperlukan audience global, sandingkan API ini dengan Google Translate API untuk menerjemahkan teks ke dalam lebih dari 90 bahasa.