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 Hochverfü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 in den Buckets gespeicherten Objekte mithilfe von Google Cloud Storage APIs bearbeiten.

Mit der Admin SDK können Sie auch freigegebene URLs erstellen, über die 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 eine authentifizierte Referenz zu diesem Bucket abrufen.

Der Bucket-Name darf gs:// oder andere Protokollpräfixe nicht enthalten. Wenn die Bucket-URL in der Firebase-Konsole 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 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': '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. Sie müssen Google Cloud Storage-Bibliotheken nicht authentifizieren, wenn Sie das Firebase Admin SDK verwenden. Die vom Admin SDK zurückgegebenen Bucket-Referenzen 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 zuvor in diesem Leitfaden beschriebenen Standard-Bucket oder mehrere Cloud Storage-Buckets in einer einzelnen Anwendung 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")

Freigabelink für den Download 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 diese URL hat, 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 abhängig von den Google Cloud Storage-Clientbibliotheken, um Cloud Storage-Zugriff bereitzustellen. 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 Dateiupload und Herunterladen verwenden.