Admin Cloud Storage API 簡介

Cloud Storage for Firebase 會將您的資料儲存在 Google Cloud Storage 值區。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 參考資料,瞭解如何在檔案上傳下載等用途中使用傳回的值區參照。