Cloud Storage for Firebase는 고가용성과 글로벌 중복성을 갖춘 엑사바이트급 객체 스토리지 솔루션인 Google Cloud Storage 버킷에 데이터를 저장합니다. Firebase Admin SDK를 사용하면 권한이 있는 환경에서 Cloud Storage 버킷에 직접 액세스할 수 있습니다. 그런 다음 Google Cloud Storage API를 사용하여 버킷에 저장된 객체를 조작할 수 있습니다.
Admin SDK를 사용하면 사용자가 버킷의 객체를 다운로드할 수 있도록 공유 가능한 URL을 만들 수도 있습니다.
기본 버킷 사용
Admin SDK를 초기화할 때 기본 버킷 이름을 지정할 수 있습니다. 그런 다음 이 버킷에 대한 인증된 참조를 가져올 수 있습니다.
버킷 이름에 gs://
또는 다른 프로토콜 프리픽스를 포함해서는 안 됩니다.
예를 들어 Firebase Console에 표시되는 버킷 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.
자바
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');
자바
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();
자바
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 참조를 확인하세요.