Admin Cloud Storage API 簡介

Cloud Storage for Firebase 會將資料儲存在 Google Cloud Storage 值區。這是 EB 規模的物件儲存解決方案,具備高可用性和全球備援功能。Firebase Admin SDK 可讓您從具有特殊權限的環境直接存取 Cloud Storage 值區。接下來,再使用 Google Cloud Storage API 操控儲存在值區的物件。

您也可以使用 Admin SDK 建立可共用的網址,讓使用者能下載值區中的物件。

使用預設值區

您可以在初始化 Admin SDK 時指定預設值區名稱。然後,您可以擷取這個值區的驗證參照。值區名稱不得包含 gs:// 或任何其他通訊協定前置字串。舉例來說,如果 Firebase 主控台中顯示的值區網址為 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.

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': '<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.

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.

您可以將 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');

Java

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

Python

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

Go

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

使用自訂 Firebase 應用程式

如果您正在建構與多個 Firebase 應用程式互動的複雜應用程式,可以按照下列步驟存取與特定 Firebase 應用程式相關聯的 Cloud Storage 值區:

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")

取得可分享的下載網址

您可以使用 Admin SDK 為值區中儲存的檔案產生沒有期限的下載網址。凡是知道這個網址的使用者 都能永久存取檔案

Node.js

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

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

Google Cloud Storage 用戶端程式庫

Firebase Admin SDK 需要使用 Google Cloud Storage 用戶端程式庫來提供 Cloud Storage 存取權。Admin SDK 傳回的值區參照是在這些程式庫中定義的物件。請參閱 Google Cloud Storage 用戶端程式庫的說明文件和 API 參考資料,瞭解如何在檔案上傳下載等用途下,使用傳回的值區參考資料。