Pengantar Admin Cloud Storage API

Cloud Storage for Firebase menyimpan data Anda di bucket Google Cloud Storage, solusi penyimpanan objek berskala exabyte dengan ketersediaan tinggi dan dan redundansi global. Dengan Firebase Admin SDK, Anda dapat mengakses bucket Cloud Storage langsung dari lingkungan istimewa. Kemudian, Anda dapat menggunakan Google Cloud Storage API untuk memanipulasi objek yang disimpan dalam bucket.

Admin SDK juga memungkinkan Anda membuat URL yang dapat dibagikan sehingga pengguna dapat mendownload objek di bucket Anda.

Menggunakan bucket default

Anda dapat menentukan nama bucket default saat melakukan inisialisasi Admin SDK. Kemudian, Anda dapat mengambil referensi yang diautentikasi ke bucket ini.

Nama bucket tidak boleh berisi gs:// atau awalan protokol lainnya. Misalnya, jika URL bucket yang ditampilkan di Firebase console adalah gs://PROJECT_ID.firebasestorage.app, teruskan string PROJECT_ID.firebasestorage.app ke Admin SDK.

Node.js

const { initializeApp, cert } = require('firebase-admin/app');
const { getStorage } = require('firebase-admin/storage');

const serviceAccount = require('./path/to/serviceAccountKey.json');

initializeApp({
  credential: cert(serviceAccount),
  storageBucket: '<BUCKET_NAME>.appspot.com'
});

const bucket = getStorage().bucket();

// 'bucket' is an object defined in the @google-cloud/storage library.
// See https://googlecloudplatform.github.io/google-cloud-node/#/docs/storage/latest/storage/bucket
// for more details.

Java

FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
    .setStorageBucket("<BUCKET_NAME>.appspot.com")
    .build();
FirebaseApp.initializeApp(options);

Bucket bucket = StorageClient.getInstance().bucket();

// 'bucket' is an object defined in the google-cloud-storage Java library.
// See http://googlecloudplatform.github.io/google-cloud-java/latest/apidocs/com/google/cloud/storage/Bucket.html
// for more details.

Python

import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage

cred = credentials.Certificate('path/to/serviceAccountKey.json')
firebase_admin.initialize_app(cred, {
    'storageBucket': 'PROJECT_ID.firebasestorage.app'
})

bucket = storage.bucket()

# 'bucket' is an object defined in the google-cloud-storage Python library.
# See https://googlecloudplatform.github.io/google-cloud-python/latest/storage/buckets.html
# for more details.

Go

import (
	"context"
	"log"

	firebase "firebase.google.com/go/v4"
	"firebase.google.com/go/v4/auth"
	"google.golang.org/api/option"
)

config := &firebase.Config{
	StorageBucket: "<BUCKET_NAME>.appspot.com",
}
opt := option.WithCredentialsFile("path/to/serviceAccountKey.json")
app, err := firebase.NewApp(context.Background(), config, opt)
if err != nil {
	log.Fatalln(err)
}

client, err := app.Storage(context.Background())
if err != nil {
	log.Fatalln(err)
}

bucket, err := client.DefaultBucket()
if err != nil {
	log.Fatalln(err)
}
// 'bucket' is an object defined in the cloud.google.com/go/storage package.
// See https://godoc.org/cloud.google.com/go/storage#BucketHandle
// for more details.

Anda dapat menggunakan referensi bucket yang ditampilkan oleh Admin SDK bersama dengan library klien Google Cloud Storage resmi untuk mengupload, mendownload, dan memodifikasi konten di bucket yang terkait dengan project Firebase Anda. Perhatikan bahwa Anda tidak perlu mengautentikasi library Google Cloud Storage saat menggunakan Firebase Admin SDK. Referensi bucket yang ditampilkan oleh Admin SDK sudah diautentikasi dengan kredensial yang digunakan untuk menginisialisasi aplikasi Firebase Anda.

Menggunakan bucket kustom

Jika ingin menggunakan bucket Cloud Storage selain bucket default yang dijelaskan sebelumnya dalam panduan ini, atau menggunakan beberapa bucket Cloud Storage dalam satu aplikasi, Anda dapat mengambil referensi ke bucket kustom:

Node.js

const bucket = getStorage().bucket('my-custom-bucket');

Java

Bucket bucket = StorageClient.getInstance().bucket("my-custom-bucket");

Python

bucket = storage.bucket('my-custom-bucket')

Go

 bucket, err := client.Bucket("my-custom-bucket")

Menggunakan aplikasi Firebase kustom

Jika membangun aplikasi lebih kompleks yang berinteraksi dengan beberapa aplikasi Firebase, Anda dapat mengakses bucket Cloud Storage yang dikaitkan dengan aplikasi Firebase tertentu seperti berikut ini:

Node.js

const bucket = getStorage(customApp).bucket();

Java

Bucket bucket = StorageClient.getInstance(customApp).bucket();

Python

bucket = storage.bucket(app=custom_app)

Go

otherClient, err := otherApp.Storage(context.Background())
bucket, err := otherClient.Bucket("other-app-bucket")

Mendapatkan URL download yang dapat dibagikan

Anda dapat menggunakan Admin SDK untuk membuat URL download yang tidak akan habis masa berlakunya untuk file yang disimpan di bucket Anda. Siapa saja yang memiliki URL ini dapat mengakses file secara permanen.

Node.js

const { getStorage, getDownloadURL } = require('firebase-admin/storage');

const fileRef = getStorage().bucket('my-bucket').file('my-file');
const downloadURL= await getDownloadURL(fileRef);

Library klien Google Cloud Storage

Firebase Admin SDK bergantung pada library klien Google Cloud Storage untuk memberikan akses Cloud Storage. Referensi bucket yang ditampilkan oleh Admin SDK adalah objek yang ditentukan dalam library ini. Lihat referensi API dan dokumentasi tentang library klien Google Cloud Storage untuk mempelajari cara menggunakan referensi bucket yang ditampilkan dalam kasus penggunaan seperti upload dan download file.