管理雲端儲存 API 簡介

Cloud Storage for Firebase 將您的資料儲存在Google Cloud Storage 儲存桶中,這是一個具有高可用性和全域冗餘的 EB 級物件儲存解決方案。 Firebase Admin SDK 可讓您從特權環境直接存取您的 Cloud Storage 儲存桶。然後,您可以使用Google Cloud Storage API來操作儲存在儲存桶中的物件。

Admin SDK 還允許您建立可共用 URL,以便使用者可以下載您儲存桶中的物件。

使用預設儲存桶

您可以在初始化 Admin SDK 時指定預設的儲存桶名稱。然後您可以檢索對此儲存桶的經過驗證的參考。儲存桶名稱不得包含gs://或任何其他協定前綴。例如,如果Firebase 控制台中顯示的儲存桶 URL 為gs://bucket-name.appspot.com ,請將字串bucket-name.appspot.com傳遞給 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.

爪哇

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': '<BUCKET_NAME>.appspot.com'
})

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.

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.

您可以將 Admin SDK 傳回的儲存桶引用與官方Google Cloud Storage 用戶端程式庫結合使用,上傳、下載和修改與您的 Firebase 專案關聯的儲存桶中的內容。請注意,使用 Firebase Admin SDK 時,您不必對 Google Cloud Storage 庫進行身份驗證。 Admin SDK 傳回的儲存桶參考已使用用於初始化 Firebase 應用程式的憑證進行了驗證。

使用自訂儲存桶

如果您想要使用上面提供的預設儲存桶以外的 Cloud Storage 儲存桶,或在單一應用程式中使用多個 Cloud Storage 儲存桶,您可以擷取自訂儲存桶的引用,如下所示:

Node.js

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

爪哇

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

Python

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

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

使用自訂 Firebase 應用

如果您正在建立與多個 Firebase 應用程式互動的更複雜的應用程序,則可以存取與特定 Firebase 應用程式關聯的 Cloud Storage 儲存桶,如下所示:

Node.js

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

爪哇

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

Python

bucket = storage.bucket(app=custom_app)

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

取得可分享的下載 URL

您可以使用 Admin SDK 為儲存桶中儲存的檔案產生不過期的下載 URL。任何擁有此 URL 的人都可以永久存取該文件。

Node.js

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

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

Google 雲端儲存用戶端庫

Firebase Admin SDK 依賴Google Cloud Storage 用戶端程式庫來提供 Cloud Storage 存取權。 Admin SDK 傳回的儲存桶參考是這些庫中定義的物件。請參閱 Google Cloud Storage 用戶端庫的文件和 API 參考,以了解如何在文件上傳下載等用例中使用傳回的儲存桶引用。