Cloud Storage for Firebase はデータを Google Cloud Storage バケットに格納します。これはエクサバイト スケールのオブジェクト ストレージ ソリューションで、高い可用性とグローバルな冗長性を備えています。Firebase Admin SDK を使用すると、特権環境から Cloud Storage バケットに直接アクセスできます。さらに、Google Cloud Storage API を使用して、バケットに格納されているオブジェクトを操作できます。
デフォルトのバケットを使用する
Admin SDK を初期化するときに、デフォルトのバケット名を指定できます。これにより、バケットへの認証済み参照を取得できます。バケット名には、gs://
などのプロトコル接頭辞を含めないでください。たとえば、Firebase コンソールに表示されているバケットの URL が gs://bucket-name.appspot.com
の場合、文字列 bucket-name.appspot.com
を 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.
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")
Google Cloud Storage クライアント ライブラリ
Firebase Admin SDK は Google Cloud Storage クライアント ライブラリを介して Cloud Storage にアクセスします。Admin SDK から返されるバケット参照は、これらのライブラリで定義されたオブジェクトです。返されたバケット参照をファイルのアップロードやダウンロードなどで使用する方法については、Google Cloud Storage クライアント ライブラリのドキュメントと API リファレンスをご覧ください。