Présentation de l'API Cloud Storage pour les administrateurs

Cloud Storage for Firebase stocke vos données dans un Google Cloud Storage bucket, une solution de stockage d'objets à l'échelle de l'exaoctet, avec une haute disponibilité et une redondance mondiale. Le SDK Firebase Admin vous permet d'accéder directement à vos Cloud Storage buckets à partir d'environnements privilégiés. Vous pouvez ensuite utiliser Google Cloud Storage API pour manipuler les objets stockés dans les buckets.

Le Admin SDK vous permet également de créer des URL partageables afin que les utilisateurs puissent télécharger des objets dans vos buckets.

Assurez-vous également que votre projet Firebase dispose du forfait Blaze avec paiement à l'usage, qui est obligatoire depuis octobre 2024 (consultez notre FAQ). Si vous débutez avec Firebase et Google Cloud, vérifiez si vous êtes éligible à un crédit de 300$.

Utiliser un bucket par défaut

Vous pouvez spécifier un nom de bucket par défaut lors de l'initialisation du SDK Admin. Vous pouvez ensuite récupérer une référence authentifiée à ce bucket.

Le nom du bucket ne doit pas contenir gs:// ni aucun autre préfixe de protocole. Par exemple, si l'URL du bucket affichée dans la Firebase console est gs://PROJECT_ID.firebasestorage.app, transmettez la chaîne PROJECT_ID.firebasestorage.app au 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 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.

Go

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.

Vous pouvez utiliser les références de bucket renvoyées par le SDK Admin avec les bibliothèques clientes Google Cloud Storage officielles pour importer, télécharger et modifier du contenu dans les buckets associés à vos projets Firebase. Notez que vous n'avez pas besoin d'authentifier Google Cloud Storage bibliothèques lorsque vous utilisez le SDK Firebase Admin. Les références de bucket renvoyées par le SDK Admin sont déjà authentifiées avec les identifiants utilisés pour initialiser votre application Firebase.

Utiliser des buckets personnalisés

Si vous souhaitez utiliser un Cloud Storage bucket autre que celui par défaut décrit précédemment dans ce guide, ou utiliser plusieurs Cloud Storage buckets dans une seule application, vous pouvez récupérer une référence à un bucket personnalisé :

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

Go

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

Utiliser une application Firebase personnalisée

Si vous créez une application plus complexe qui interagit avec plusieurs applications Firebase, vous pouvez accéder aux Cloud Storage buckets associés à une application Firebase spécifique comme suit :

Node.js

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

Java

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

Python

bucket = storage.bucket(app=custom_app)

Go

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

Obtenir une URL de téléchargement partageable

Vous pouvez utiliser le Admin SDK pour générer une URL de téléchargement qui n'expire pas pour les fichiers stockés dans vos buckets. Toute personne disposant de cette URL peut accéder définitivement au fichier.

Node.js

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

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

Bibliothèques clientes Google Cloud Storage

Les SDK Firebase Admin dépendent des Google Cloud Storage bibliothèques clientes pour fournir Cloud Storage un accès. Les références de bucket renvoyées par le SDK Admin sont des objets définis dans ces bibliothèques. Consultez la documentation et les références d'API des Google Cloud Storage bibliothèques clientes pour découvrir comment utiliser les références de bucket renvoyées dans des cas d'utilisation tels que l'importation de fichiers et le téléchargement.