Einführung in die Admin Cloud Storage API

Cloud Storage für 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 aus privilegierten Umgebungen direkt auf Ihre Cloud Storage-Buckets zugreifen. Anschließend können Sie Google Cloud Storage-APIs verwenden, um die in den Buckets gespeicherten Objekte zu bearbeiten.

Mit dem Admin SDK können Sie auch gemeinsam nutzbare URLs erstellen, damit Benutzer Objekte in Ihren Buckets herunterladen können.

Verwenden Sie einen Standard-Bucket

Sie können beim Initialisieren des Admin SDK einen Standard-Bucket-Namen angeben. Anschließend können Sie eine authentifizierte Referenz auf diesen Bucket abrufen. Der Bucket-Name darf weder gs:// noch andere Protokollpräfixe enthalten. Wenn die in der Firebase-Konsole angezeigte Bucket-URL beispielsweise gs://bucket-name.appspot.com lautet, übergeben Sie die Zeichenfolge bucket-name.appspot.com 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 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': '<BUCKET_NAME>.appspot.com'
})

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.

Gehen

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. 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 Anmeldeinformationen authentifiziert, die zum Initialisieren Ihrer Firebase-App verwendet wurden.

Verwenden Sie benutzerdefinierte Buckets

Wenn Sie einen anderen Cloud Storage-Bucket als den oben angegebenen Standard verwenden oder mehrere Cloud Storage-Buckets in einer einzelnen App verwenden möchten, können Sie wie unten gezeigt 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')

Gehen

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

Verwenden Sie eine benutzerdefinierte Firebase-App

Wenn Sie eine kompliziertere Anwendung erstellen, die mit mehreren Firebase-Apps interagiert, können Sie wie folgt auf die Cloud Storage-Buckets zugreifen, die einer bestimmten Firebase-App zugeordnet sind:

Node.js

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

Java

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

Python

bucket = storage.bucket(app=custom_app)

Gehen

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

Erhalten Sie eine gemeinsam nutzbare Download-URL

Sie können das Admin SDK verwenden, um eine nicht ablaufende Download-URL für in Ihren Buckets gespeicherte Dateien zu generieren. Jeder mit dieser URL 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 auf die Google Cloud Storage-Clientbibliotheken angewiesen, um Cloud Storage-Zugriff bereitzustellen. Die vom Admin SDK zurückgegebenen Bucket-Referenzen sind in diesen Bibliotheken definierte Objekte. Weitere Informationen zur Verwendung der zurückgegebenen Bucket-Referenzen in Anwendungsfällen wie dem Hoch- und Herunterladen von Dateien finden Sie in der Dokumentation und den API-Referenzen der Google Cloud Storage-Clientbibliotheken.