Catch up on everthing we announced at this year's Firebase Summit. Learn more

Введение в Admin Cloud Storage API

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

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

Вы можете указать имя сегмента по умолчанию при инициализации Admin SDK. Затем вы можете получить аутентифицированную ссылку на эту корзину. Имя ведра не должно содержать gs:// или любые другие префиксы протокола. Например, если ведро URL отображается в 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.

Джава

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.

Идти

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.

Использовать собственные корзины

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

Node.js

const bucket = getStorage().bucket('my-custom-bucket');

Джава

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();

Джава

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")

Клиентские библиотеки Google Cloud Storage

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