Введение в API административного облачного хранилища

Cloud Storage for Firebase хранит ваши данные в хранилище Google Cloud Storage — масштабируемом решении для объектного хранения данных объемом в эксабайты, обеспечивающем высокую доступность и глобальное резервирование. Firebase Admin SDK позволяет напрямую получать доступ к вашим хранилищам Cloud Storage из привилегированных сред. Затем вы можете использовать API Google Cloud Storage для управления объектами, хранящимися в хранилищах.

Admin SDK также позволяет создавать URL-адреса, которыми можно делиться, чтобы пользователи могли загружать объекты из ваших хранилищ.

Также убедитесь, что ваш проект Firebase использует тарифный план Blaze с оплатой по мере использования , это требование вступило в силу в октябре 2024 года (см. наши часто задаваемые вопросы ). Если вы новичок в Firebase и Google Cloud, проверьте, имеете ли вы право на кредит в размере 300 долларов .

Использовать корзину по умолчанию

При инициализации Admin SDK можно указать имя корзины по умолчанию. Затем можно получить аутентифицированную ссылку на эту корзину.

Имя хранилища не должно содержать gs:// или какие-либо другие префиксы протоколов. Например, если URL-адрес хранилища, отображаемый в консоли Firebasegs:// 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.

Идти

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.

Вы можете использовать ссылки на корзины, возвращаемые SDK администратора, совместно с официальными клиентскими библиотеками Google Cloud Storage для загрузки, скачивания и изменения контента в корзинах, связанных с вашими проектами Firebase. Обратите внимание, что при использовании SDK администратора Firebase аутентификация библиотек Google Cloud Storage не требуется. Ссылки на корзины, возвращаемые 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')

Идти

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

Используйте собственное приложение Firebase

Если вы разрабатываете более сложное приложение, взаимодействующее с несколькими приложениями Firebase , вы можете получить доступ к хранилищам Cloud Storage связанным с конкретным приложением Firebase, следующим образом:

Node.js

const bucket = getStorage(customApp).bucket();

Java

Bucket bucket = StorageClient.getInstance(customApp).bucket();

Python

bucket = storage.bucket(app=custom_app)

Идти

otherClient, err := otherApp.Storage(context.Background())
bucket, err := otherClient.Bucket("other-app-bucket")

Получите ссылку для скачивания, которой можно поделиться.

С помощью Admin SDK вы можете сгенерировать URL-адрес для загрузки файлов, хранящихся в ваших хранилищах, без ограничения срока действия. Любой пользователь, имеющий этот URL-адрес, сможет получить к файлу постоянный доступ.

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

SDK администратора Firebase зависят от клиентских библиотек Google Cloud Storage для обеспечения доступа Cloud Storage . Ссылки на корзины, возвращаемые SDK администратора, представляют собой объекты, определенные в этих библиотеках. Обратитесь к документации и справочнику API клиентских библиотек Google Cloud Storage чтобы узнать, как использовать возвращаемые ссылки на корзины в таких сценариях, как загрузка и скачивание файлов.