Berintegrasi dengan Google Cloud Platform

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

Pada prinsipnya, Firebase SDK untuk Cloud Storage menggunakan bucket default di paket gratis Google App Engine. Dengan demikian, Anda dapat menyiapkan dan menjalankan 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 Platform.

Integrasi dengan Google Cloud Platform, termasuk mengimpor bucket Cloud Storage yang ada, memerlukan project Firebase dengan paket Blaze. Pelajari lebih lanjut mengenai paket 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 ACL Google Cloud Storage atau IAM Level Project, bukan Firebase Authentication dan Aturan Keamanan Storage.

API

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

Google-Cloud Server SDK

Google Cloud Platform menawarkan server SDK berkualitas tinggi untuk sejumlah produk GCP, 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 bisa dilakukan library klien, atau memiliki klien HTTP favorit yang ingin digunakan, Cloud Storage menawarkan API JSON dan XML 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 backup data Anda, dan memulihkan data dari backup 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 fitur 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 menerapkannya menggunakan perintah gsutil lifecycle set:

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

Perlu diperhatikan bahwa hal ini berlaku untuk semua file dalam bucket. Jadi, jika Anda ingin menyimpan backup pengguna yang penting dalam waktu yang lama bersama foto yang ingin Anda hapus setiap hari, sebaiknya gunakan dua bucket terpisah atau lakukan 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, go) yang dapat mengubah ukuran, memutar, membalik, dan memangkas gambar, serta mengembalikan URL yang menampilkan gambar. Dengan demikian, transformasi sisi klien dapat dilakukan, serupa dengan Cloudinary dan Imgix.

Ketika mengimpor project Google Cloud Platform yang ada ke Firebase, jika Anda 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 firebase-storage@system.gserviceaccount.com:O 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 ID project berawalan domain, misalnya: domain.com:project-1234.

Dalam salah satu kasus ini, project tidak akan mendukung Cloud Storage untuk Firebase, dan Anda harus membuat project Firebase baru agar dapat menggunakan Cloud Storage. 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, hubungkan API ini dengan Google Translate API untuk menerjemahkan teks ke dalam lebih dari 90 bahasa.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.