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