Introduzione all'API Admin Cloud Storage

Cloud Storage for Firebase archivia i dati in un Google Cloud Storage bucket, una soluzione di archiviazione degli oggetti su larga scala exabyte con alta disponibilità e redundanza globale. L'SDK Firebase Admin ti consente di accedere direttamente ai tuoi bucket Cloud Storage da ambienti con privilegi. In seguito, puoi utilizzare le API Google Cloud Storage per manipolare gli oggetti archiviati nei bucket.

Admin SDK consente inoltre di creare URL condivisibili in modo che gli utenti possano scaricare oggetti nei bucket.

Utilizzare un bucket predefinito

Puoi specificare un nome di bucket predefinito durante l'inizializzazione di SDK Admin. In questo modo, potrai recuperare un riferimento autenticato a questo bucket.

Il nome del bucket non deve contenere gs:// o altri prefissi di protocollo. Ad esempio, se l'URL del bucket visualizzato nella console Firebase è gs://PROJECT_ID.firebasestorage.app, passa la stringa PROJECT_ID.firebasestorage.app all'SDK Admin.

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 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': '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.

Vai

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.

Puoi utilizzare i riferimenti al bucket restituiti dall'SDK Admin insieme alle librerie client di Google Cloud Storage ufficiali per caricare, scaricare e modificare i contenuti nei bucket associati ai tuoi progetti Firebase. Tieni presente che non devi autenticare le librerie Google Cloud Storage quando utilizzi l'SDK Firebase Admin. I riferimenti ai bucket restituiti dall'SDK Admin sono già autenticati con le credenziali utilizzate per inizializzare l'app Firebase.

Utilizzare bucket personalizzati

Se vuoi utilizzare un bucket Cloud Storage diverso da quello predefinito descritto in precedenza in questa guida o utilizzare più bucket Cloud Storage in una singola app, puoi recuperare un riferimento a un bucket personalizzato:

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

Vai

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

Utilizzare un'app Firebase personalizzata

Se stai creando un'applicazione più complicata che interagisce con più app Firebase, puoi accedere ai bucket Cloud Storage associati a una specifica app Firebase nel seguente modo:

Node.js

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

Java

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

Python

bucket = storage.bucket(app=custom_app)

Vai

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

Ottenere un URL di download condivisibile

Puoi utilizzare Admin SDK per generare un URL di download senza scadenza per i file archiviati nei tuoi bucket. Chiunque disponga di questo URL può accedere definitivamente al file.

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 librerie client

Gli SDK Firebase Admin dipendono dalle librerie client di Google Cloud Storage per fornire l'accesso Cloud Storage. I riferimenti ai bucket restituiti dall'SDK Admin sono oggetti definiti in queste librerie. Consulta la documentazione e i riferimenti API delle librerie client di Google Cloud Storage per scoprire come utilizzare i riferimenti ai bucket restituiti in casi d'uso come il caricamento e il download di file.