Einführung in die Admin Cloud Storage API

Cloud Storage for Firebase speichert Ihre Daten in einem Google Cloud Storage-Bucket – einer Objektspeicherlösung im Exabyte-Bereich mit hoher Verfügbarkeit und globaler Redundanz. Mit dem Firebase Admin SDK können Sie direkt aus privilegierten Umgebungen auf Ihre Cloud Storage-Buckets zugreifen. Anschließend können Sie die Google Cloud Storage-APIs verwenden, um die in den Buckets gespeicherten Objekte zu bearbeiten.

Mit Admin SDK können Sie auch freigabefähige URLs erstellen, damit Nutzer Objekte in Ihren Buckets herunterladen können.

Außerdem muss für Ihr Firebase-Projekt der Blaze-Tarif (Pay as you go) gelten. Diese Anforderung gilt seit Oktober 2024 (siehe unsere FAQs). Wenn Sie neu bei Firebase und Google Cloud sind, haben Sie möglicherweise Anspruch auf ein Guthaben von 300$.

Standard-Bucket verwenden

Sie können beim Initialisieren des Admin SDK einen Standard-Bucket-Namen angeben. Anschließend können Sie einen authentifizierten Verweis auf diesen Bucket abrufen.

Der Bucket-Name darf nicht gs:// oder andere Protokollpräfixe enthalten. Wenn beispielsweise die in der Firebase-Konsole angezeigte Bucket-URL gs://PROJECT_ID.firebasestorage.app ist, übergeben Sie den String PROJECT_ID.firebasestorage.app an das 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.

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.

Sie können die vom Admin SDK zurückgegebenen Bucket-Referenzen in Verbindung mit den offiziellen Google Cloud Storage-Clientbibliotheken verwenden, um Inhalte in den mit Ihren Firebase-Projekten verknüpften Buckets hochzuladen, herunterzuladen und zu ändern. Hinweis: Wenn Sie das Firebase Admin SDK verwenden, müssen Sie die Google Cloud Storage-Bibliotheken nicht authentifizieren. Die Bucket-Referenzen, die vom Admin SDK zurückgegeben werden, sind bereits mit den Anmeldedaten authentifiziert, die zum Initialisieren Ihrer Firebase-App verwendet wurden.

Benutzerdefinierte Buckets verwenden

Wenn Sie einen anderen Cloud Storage-Bucket als den Standard-Bucket verwenden möchten, der weiter oben in diesem Leitfaden beschrieben wird, oder mehrere Cloud Storage-Buckets in einer einzelnen App verwenden möchten, können Sie einen Verweis auf einen benutzerdefinierten Bucket abrufen:

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

Benutzerdefinierte Firebase-App verwenden

Wenn Sie eine komplexere Anwendung entwickeln, die mit mehreren Firebase-Apps interagiert, können Sie wie folgt auf die Cloud Storage-Buckets zugreifen, die mit einer bestimmten Firebase-App verknüpft sind:

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

Freigebare Download-URL abrufen

Mit Admin SDK können Sie eine Download-URL ohne Ablaufdatum für Dateien generieren, die in Ihren Buckets gespeichert sind. Jeder, der über diese URL verfügt, kann dauerhaft auf die Datei zugreifen.

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 Clientbibliotheken

Die Firebase Admin SDKs sind von den Google Cloud Storage-Clientbibliotheken abhängig, um Cloud Storage-Zugriff zu ermöglichen. Die vom Admin SDK zurückgegebenen Bucket-Referenzen sind Objekte, die in diesen Bibliotheken definiert sind. In der Dokumentation und den API-Referenzen der Google Cloud Storage-Clientbibliotheken finden Sie Informationen dazu, wie Sie die zurückgegebenen Bucket-Referenzen in Anwendungsfällen wie Datei-Upload und -Download verwenden.