Admin Cloud Storage API 简介

Cloud Storage for Firebase 可将您的数据存储在 Google Cloud Storage 存储桶中,这是一种 EB 级对象存储解决方案,不仅可用性高,还能实现全局冗余。借助 Firebase Admin SDK,您可以从特权环境直接访问 Cloud Storage 存储桶。然后可以使用 Google Cloud Storage API 来操控存储桶中存储的对象。

Admin SDK 还支持创建可共享的网址,以便用户下载您的存储桶中的对象。

此外,请确保您的 Firebase 项目采用的是随用随付 Blaze 定价方案;这项要求已于 2024 年 10 月生效(请参阅我们的常见问题解答)。如果您是 Firebase 和 Google Cloud 新手,请确认您是否有资格获得 300 美元赠金

使用默认存储桶

您可以在初始化 Admin SDK 时指定默认存储桶的名称,然后可以检索对该存储桶的经过身份验证的引用。

存储桶名称不得包含 gs:// 或任何其他协议前缀。例如,如果 Firebase 控制台中显示的存储桶网址为 gs://PROJECT_ID.firebasestorage.app,请将字符串 PROJECT_ID.firebasestorage.app 传递给 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 https://cloud.google.com/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.Bucket
// 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.