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 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 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. Wenn Sie das Firebase Admin SDK verwenden, müssen Sie Google Cloud Storage-Bibliotheken nicht authentifizieren. 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 Standard-Cloud Storage-Bucket verwenden möchten, der oben in diesem Leitfaden beschrieben wurde, oder mehrere Cloud Storage-Buckets in einer einzelnen App verwenden möchten, können Sie eine Referenz 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 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 auf die Google Cloud Storage-Clientbibliotheken angewiesen, 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 erfahren Sie, wie Sie die zurückgegebenen Bucket-Referenzen in Anwendungsfällen wie dem Upload und Download von Dateien verwenden.