Облачное хранилище для Firebase хранит ваши данные в корзине Google Cloud Storage — объектном хранилище эксабайтного масштаба с высокой доступностью и глобальной избыточностью. Firebase Admin SDK позволяет вам напрямую обращаться к корзинам облачного хранилища из привилегированных сред. Затем вы можете использовать API-интерфейсы Google Cloud Storage для управления объектами, хранящимися в корзинах.
Использовать корзину по умолчанию
Вы можете указать имя корзины по умолчанию при инициализации 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.
питон
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. Обратите внимание, что вам не нужно аутентифицировать библиотеки Google Cloud Storage при использовании Firebase Admin SDK. Ссылки на сегменты, возвращаемые Admin SDK, уже аутентифицированы с использованием учетных данных, используемых для инициализации вашего приложения Firebase.
Используйте пользовательские сегменты
Если вы хотите использовать ведро Cloud Storage, отличное от указанного выше по умолчанию, или использовать несколько ведер Cloud Storage в одном приложении, вы можете получить ссылку на пользовательское ведро, как показано ниже:
Node.js
const bucket = getStorage().bucket('my-custom-bucket');
Джава
Bucket bucket = StorageClient.getInstance().bucket("my-custom-bucket");
питон
bucket = storage.bucket('my-custom-bucket')
Идти
bucket, err := client.Bucket("my-custom-bucket")
Используйте собственное приложение Firebase
Если вы создаете более сложное приложение, взаимодействующее с несколькими приложениями Firebase , вы можете получить доступ к корзинам Cloud Storage, связанным с конкретным приложением Firebase, следующим образом:
Node.js
const bucket = getStorage(customApp).bucket();
Джава
Bucket bucket = StorageClient.getInstance(customApp).bucket();
питон
bucket = storage.bucket(app=custom_app)
Идти
otherClient, err := otherApp.Storage(context.Background())
bucket, err := otherClient.Bucket("other-app-bucket")
Клиентские библиотеки Google Cloud Storage
Пакеты Firebase Admin SDK зависят от клиентских библиотек Google Cloud Storage для предоставления доступа к облачному хранилищу. Ссылки на сегменты, возвращаемые Admin SDK, являются объектами, определенными в этих библиотеках. Обратитесь к документации и ссылкам на API клиентских библиотек Google Cloud Storage, чтобы узнать, как использовать возвращенные ссылки на сегменты в таких случаях использования, как загрузка и скачивание файлов.