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 專案。請注意,您不必驗證 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 參考資料,瞭解如何 根據檔案等用途,使用傳回的值區參照 上傳和 下載。