Introducción a la API de administración de almacenamiento en la nube

Cloud Storage para Firebase almacena tus datos en un depósito de Google Cloud Storage , una solución de almacenamiento de objetos a escala de exabytes con alta disponibilidad y redundancia global. El SDK de Firebase Admin le permite acceder directamente a sus depósitos de Cloud Storage desde entornos privilegiados. Luego, puede utilizar las API de Google Cloud Storage para manipular los objetos almacenados en los depósitos.

El SDK de administración también le permite crear URL que se pueden compartir para que los usuarios puedan descargar objetos en sus depósitos.

Utilice un depósito predeterminado

Puede especificar un nombre de depósito predeterminado al inicializar el SDK de administrador. Luego puede recuperar una referencia autenticada a este depósito. El nombre del depósito no debe contener gs:// ni ningún otro prefijo de protocolo. Por ejemplo, si la URL del depósito que se muestra en Firebase console es gs://bucket-name.appspot.com , pase la cadena bucket-name.appspot.com al SDK de administrador.

Nodo.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.

Pitón

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.

Ir

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.

Puedes usar las referencias de depósitos devueltas por el SDK de administrador junto con las bibliotecas cliente oficiales de Google Cloud Storage para cargar, descargar y modificar contenido en los depósitos asociados con tus proyectos de Firebase. Tenga en cuenta que no es necesario autenticar las bibliotecas de Google Cloud Storage cuando utiliza el SDK de administrador de Firebase. Las referencias de depósito devueltas por el SDK de administración ya están autenticadas con las credenciales utilizadas para inicializar su aplicación Firebase.

Utilice depósitos personalizados

Si desea utilizar un depósito de Cloud Storage distinto del predeterminado proporcionado anteriormente, o utilizar varios depósitos de Cloud Storage en una sola aplicación, puede recuperar una referencia a un depósito personalizado como se muestra a continuación:

Nodo.js

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

Java

Bucket bucket = StorageClient.getInstance().bucket("my-custom-bucket");

Pitón

bucket = storage.bucket('my-custom-bucket')

Ir

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

Utilice una aplicación de Firebase personalizada

Si estás creando una aplicación más complicada que interactúa con varias aplicaciones de Firebase , puedes acceder a los depósitos de Cloud Storage asociados con una aplicación de Firebase específica de la siguiente manera:

Nodo.js

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

Java

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

Pitón

bucket = storage.bucket(app=custom_app)

Ir

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

Obtenga una URL de descarga para compartir

Puede utilizar el SDK de administración para generar una URL de descarga que no caduque para los archivos almacenados en sus depósitos. Cualquier persona con esta URL puede acceder permanentemente al archivo.

Nodo.js

const { getStorage, getDownloadURL } = require('firebase-admin/storage');

const fileRef = getStorage().bucket('my-bucket').file('my-file');
const downloadURL= await getDownloadURL(fileRef);

Bibliotecas cliente de Google Cloud Storage

Los SDK de Firebase Admin dependen de las bibliotecas cliente de Google Cloud Storage para proporcionar acceso a Cloud Storage. Las referencias de depósito devueltas por el SDK de administración son objetos definidos en estas bibliotecas. Consulte la documentación y las referencias de API de las bibliotecas cliente de Google Cloud Storage para aprender a utilizar las referencias de depósito devueltas en casos de uso como la carga y descarga de archivos.