Cloud Storage for Firebase przechowuje dane w zasobniku Google Cloud Storage, czyli rozwiązaniu do przechowywania obiektów o skali eksabajtów, które zapewnia wysoką dostępność i globalną redundancję. Pakiet Firebase Admin SDK umożliwia bezpośredni dostęp do zasobników Cloud Storage z uprzywilejowanych środowisk. Następnie możesz używać Google Cloud Storageinterfejsów API do manipulowania obiektami przechowywanymi w zasobnikach.
Admin SDK umożliwia też tworzenie adresów URL, które można udostępniać, aby użytkownicy mogli pobierać obiekty z Twoich zasobników.
Upewnij się, że Twój projekt w Firebase korzysta z abonamentu Blaze z płatnością według wykorzystania, który jest wymagany do korzystania z Cloud Storage for Firebase. Jeśli dopiero zaczynasz korzystać z Firebase i Google Cloud, sprawdź, czy możesz skorzystać z bezpłatnego okresu próbnego, w którym masz do dyspozycji środki w wysokości 300 USD.
Używanie domyślnego zasobnika
Podczas inicjowania pakietu Admin SDK możesz określić domyślną nazwę zasobnika. Następnie możesz pobrać uwierzytelnione odwołanie do tego zasobnika.
Nazwa zasobnika nie może zawierać znaku gs:// ani innych prefiksów protokołów.
Jeśli na przykład adres URL zasobnika wyświetlany w Firebasekonsoli to gs://PROJECT_ID.firebasestorage.app, przekaż ciąg znaków PROJECT_ID.firebasestorage.app do pakietu 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.
Możesz używać odwołań do zasobników zwracanych przez pakiet Admin SDK w połączeniu z oficjalnymi Google Cloud Storagebibliotekami klienta, aby przesyłać, pobierać i modyfikować treści w zasobnikach powiązanych z Twoimi projektami Firebase. Pamiętaj, że podczas korzystania z pakietu Firebase Admin SDK nie musisz uwierzytelniać Google Cloud Storage bibliotek. Odwołania do zasobników zwracane przez pakiet Admin SDK są już uwierzytelnione za pomocą danych logowania użytych do zainicjowania aplikacji w Firebase.
Używanie niestandardowych zakresów wartości
Jeśli chcesz użyć Cloud Storage zasobnika innego niż domyślny opisany wcześniej w tym przewodniku lub użyć wielu Cloud Storage zasobników w jednej aplikacji, możesz pobrać odwołanie do niestandardowego zasobnika:
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")
Używanie niestandardowej aplikacji w Firebase
Jeśli tworzysz bardziej złożoną aplikację, która wchodzi w interakcję z wieloma aplikacjami w Firebase, możesz uzyskać dostęp do Cloud Storage zasobników powiązanych z określoną aplikacją w Firebase w ten sposób:
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")
Uzyskiwanie adresu URL do pobierania, który można udostępniać
Możesz użyć znaku Admin SDK, aby wygenerować nieograniczony czasowo adres URL do pobierania plików przechowywanych w Twoich zasobnikach. Każda osoba, która ma ten adres URL, może na stałe uzyskać dostęp do pliku.
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 biblioteki klienta
Pakiety Firebase Admin SDK korzystają z Google Cloud Storage bibliotek klienta, aby zapewnić Cloud Storage dostęp. Odwołania do zasobników zwracane przez pakiet Admin SDK to obiekty zdefiniowane w tych bibliotekach. Zapoznaj się z dokumentacją i odniesieniami do interfejsu API bibliotek klienta Google Cloud Storage, aby dowiedzieć się, jak używać zwróconych odwołań do zasobników w przypadkach użycia, takich jak przesyłanie i pobieranie plików.