Cloud Storage for Firebase はデータを Google Cloud Storage バケットに格納します。これはエクサバイト スケールのオブジェクト ストレージ ソリューションで、高い可用性とグローバルな冗長性を備えています。Firebase Admin SDK を使用すると、特権環境から Cloud Storage バケットに直接アクセスできます。その後、Google Cloud Storage API を使用して、バケットに格納されているオブジェクトを操作できます。
Admin SDK では、共有可能な URL を作成して、ユーザーがバケットにオブジェクトをダウンロードできるようにすることも可能です。
デフォルトのバケットを使用する
Admin SDK を初期化するときに、デフォルトのバケット名を指定できます。これにより、認証済みのバケットへの参照を取得できます。
バケット名には、gs://
などのプロトコル接頭辞を含めないでください。たとえば、Firebase コンソールに表示されているバケットの URL が gs://PROJECT_ID.firebasestorage.app
の場合、文字列 PROJECT_ID.firebasestorage.app
を 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.
Admin SDK から返されたバケット参照を公式の Google Cloud Storage クライアント ライブラリとともに使用すると、Firebase プロジェクトに関連付けられたバケット内のコンテンツのアップロード、ダウンロード、変更を行うことができます。Firebase Admin SDK を使用する場合は、Google Cloud Storage ライブラリを認証する必要はありません。Admin SDK から返されるバケット参照は、Firebase アプリの初期化に使用する認証情報で認証済みです。
カスタム バケットを使用する
このガイドの前半で説明したデフォルト バケット以外の Cloud Storage バケットを使用する場合や、単一のアプリで複数の Cloud Storage バケットを使用する場合は、カスタム バケットへの参照を取得できます。
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")
カスタムの Firebase アプリを使用する
複数の Firebase アプリと対話する複雑なアプリケーションを作成する場合には、次のように、特定の Firebase アプリに関連付けられた Cloud Storage バケットにアクセスできます。
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")
共有可能なダウンロード URL を取得する
Admin SDK を使用して、バケットに保存されているファイルに有効期限のないダウンロード URL を生成できます。この URL を知っているユーザーは誰でもファイルに永続的にアクセスできます。
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 クライアント ライブラリ
Firebase Admin SDK は Google Cloud Storage クライアント ライブラリを介して Cloud Storage にアクセスします。Admin SDK から返されるバケット参照は、これらのライブラリで定義されたオブジェクトです。返されたバケット参照をファイルのアップロードやダウンロードなどで使用する方法については、Google Cloud Storage クライアント ライブラリのドキュメントと API リファレンスをご覧ください。