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-Maßstab mit Hochverfügbarkeit und globaler Redundanz. Mit dem Firebase Admin SDK können Sie direkt von privilegierten Umgebungen aus auf Ihre Cloud Storage-Buckets zugreifen. Anschließend können Sie die in den Buckets gespeicherten Objekte mit Google Cloud Storage APIs bearbeiten.

Mit dem Admin SDK können Sie auch freigebbare URLs erstellen, damit Nutzer Objekte in Ihren Buckets herunterladen können.

Ihr Firebase-Projekt muss das Blaze-Preismodell (Pay as you go) verwenden, da dies eine Voraussetzung für die Verwendung von Cloud Storage for Firebase ist. Wenn Sie neu bei Firebase und Google Cloud sind, prüfen Sie, ob Sie Anspruch auf ein Guthaben von 300 $ für einen kostenlosen Testzeitraum haben.

Standard-Bucket verwenden

Sie können bei der Initialisierung 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 die in der Firebase-Konsole angezeigte Bucket-URL beispielsweise gs://PROJECT_ID.firebasestorage.app lautet, ü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 Buckets, die mit Ihren Firebase-Projekten verknüpft sind, hochzuladen, herunterzuladen und zu ändern. Beachten Sie, dass Sie Google Cloud Storage-Bibliotheken nicht authentifizieren müssen, wenn Sie das Firebase Admin SDK verwenden. Die vom Admin SDK zurückgegebenen Bucket-Referenzen sind bereits mit den Anmeldedaten authentifiziert, die zur Initialisierung Ihrer Firebase-App verwendet wurden.

Benutzerdefinierte Buckets verwenden

Wenn Sie einen anderen Cloud Storage-Bucket als den zuvor in diesem Leitfaden beschriebenen Standard-Bucket verwenden 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 erstellen, die mit mehreren Firebase-Apps interagiert, können Sie so 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")

Freigebbare Download-URL abrufen

Mit dem Admin SDK können Sie eine nicht ablaufende Download-URL 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 Zugriff auf Cloud Storage 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 erfahren Sie, wie Sie die zurückgegebenen Bucket-Referenzen in Anwendungsfällen wie dem Hochladen und Herunterladen von Dateien verwenden.