Admin Cloud Storage API 소개

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 참조를 확인하세요.