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 콘솔에 표시되는 버킷 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 프로젝트 참고: 계정 인증은 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 참조에서 다음 방법을 알아보세요. 파일과 같은 사용 사례에서 반환된 버킷 참조 사용 upload다운로드할 수 있습니다.