Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Google Cloud와 통합

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Firebase용 Cloud Storage는 Google Cloud 와 긴밀하게 통합됩니다. Cloud Storage용 Firebase SDK는 파일을 Google Cloud Storage 버킷 에 직접 저장하며 앱이 성장함에 따라 App Engine 또는 Cloud Functions와 같은 관리형 컴퓨팅이나 Cloud Vision 또는 Google과 같은 기계 학습 API와 같은 다른 Google Cloud 서비스를 쉽게 통합할 수 있습니다. 번역하다.

Firebase는 Google Cloud 서비스 계정을 사용하여 사용자 자격 증명을 공유하지 않고 서비스를 운영하고 관리합니다. Cloud Storage를 사용하는 Firebase 프로젝트를 만들 때 프로젝트에서 해당 서비스 계정( service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com )을 이미 사용할 수 있음을 알 수 있습니다. 자세한 내용은 이 Firebase 지원 가이드 를 참조하세요.

내부적으로 Cloud Storage용 Firebase SDK는 App Engine 무료 등급의 기본 버킷을 사용합니다. 이를 통해 신용 카드를 입력하거나 Cloud Billing 계정을 사용 설정할 필요 없이 Cloud Storage를 빠르게 시작하고 실행할 수 있습니다. 또한 Firebase와 Google Cloud 프로젝트 간에 데이터를 쉽게 공유할 수 있습니다.

기존 Cloud Storage 버킷 가져오기를 포함하여 Google Cloud와 통합하려면 Blaze 요금제의 Firebase 프로젝트가 필요합니다. 요금제 페이지 에서 요금제에 대해 자세히 알아보세요.

구글 클라우드 저장소

Google Cloud Storage API 를 사용하여 Cloud Storage용 Firebase SDK를 통해 업로드된 파일에 액세스할 수 있으며, 특히 파일 복사 또는 이동 또는 참조에서 사용 가능한 모든 파일 나열과 같은 보다 복잡한 작업을 수행할 수 있습니다.

이러한 요청은 Firebase 인증 및 Cloud Storage 보안 규칙이 아닌 Google Cloud Storage 액세스 제어 옵션 을 사용한다는 점에 유의해야 합니다.

아피스

Cloud Storage용 Firebase SDK 외에도 원하는 작업에 따라 Cloud Storage 버킷에 저장된 데이터에 액세스할 수 있는 다양한 방법이 있습니다. 서버의 데이터에 액세스하는 경우 서버 측 라이브러리와 JSON 및 S3 호환 XML RESTful API를 제공합니다. 도움이 될 것입니다.

Google Cloud 서버 SDK

Google Cloud는 Cloud Storage를 비롯한 다양한 클라우드 제품을 위한 고품질 서버 SDK를 제공합니다. 이러한 라이브러리는 Node.js , Java , go , Python , PHPRuby 에서 사용할 수 있습니다.

설치 지침, 인증 및 문제 해결을 포함한 자세한 내용은 위에 링크된 플랫폼별 설명서를 참조하십시오.

Google Cloud Storage SDK의 사용 예는 다음과 같습니다.

Node.js

    // Require gcloud
    var gcloud = require('google-cloud');

    // Enable Cloud Storage
    var gcs = gcloud.storage({
      projectId: 'grape-spaceship-123',
      keyFilename: '/path/to/keyfile.json'
    });

    // Reference an existing bucket.
    var bucket = gcs.bucket('my-existing-bucket');

    // Upload a local file to a new file to be created in your bucket.
    bucket.upload('/photos/zoo/zebra.jpg', function(err, file) {
      if (!err) {
        // "zebra.jpg" is now in your bucket.
      }
    });

    // Download a file from your bucket.
    bucket.file('giraffe.jpg').download({
      destination: '/photos/zoo/giraffe.jpg'
    }, function(err) {});
    

자바

    // Enable Cloud Storage
    Storage storage = StorageOptions.builder()
      .authCredentials(AuthCredentials.createForJson(new FileInputStream("/path/to/my/key.json"))
      .build()
      .service();

    // Upload a local file to a new file to be created in your bucket.
    InputStream uploadContent = ...
    BlobId blobId = BlobId.of("my-existing-bucket", "zebra.jpg");
    BlobInfo blobInfo = BlobInfo.builder(blobId).contentType("text/plain").build();
    Blob zebraBlob = storage.create(blobInfo, content);

    // Download a file from your bucket.
    Blob giraffeBlob = storage.get("my-existing-bucket", "giraffe.jpg", null);
    InputStream downloadContent = giraffeBlob.getInputStream();
    

가다

    // Enable Cloud Storage
    client, err := storage.NewClient(ctx, option.WithServiceAccountFile("path/to/keyfile.json"))
    if err != nil {
        log.Fatal(err)
    }

    // Download a file from your bucket.
    rc, err := client.Bucket("my-existing-bucket").Object("giraffe.jpg").NewReader(ctx)
    if err != nil {
        log.Fatal(err)
    }
    defer rc.Close()
    body, err := ioutil.ReadAll(rc)
    if err != nil {
        log.Fatal(err)
    }
    

파이썬

    # Import gcloud
    from google.cloud import storage

    # Enable Cloud Storage
    client = storage.Client()

    # Reference an existing bucket.
    bucket = client.get_bucket('my-existing-bucket')

    # Upload a local file to a new file to be created in your bucket.
    zebraBlob = bucket.get_blob('zebra.jpg')
    zebraBlob.upload_from_filename(filename='/photos/zoo/zebra.jpg')

    # Download a file from your bucket.
    giraffeBlob = bucket.get_blob('giraffe.jpg')
    giraffeBlob.download_as_string()
    

PHP

    // Require gcloud
    require 'vendor/autoload.php';
    use Google\Cloud\Storage\StorageClient;

    // Enable Cloud Storage
    $storage = new StorageClient([
        'projectId' => 'grape-spaceship-123'
    ]);

    // Reference an existing bucket.
    $bucket = $storage->bucket('my-existing-bucket');

    // Upload a file to the bucket.
    $bucket->upload(
        fopen('/photos/zoo/zebra.jpg', 'r')
    );

    // Download a file from your bucket.
    $object = $bucket->object('giraffe.jpg');
    $object->downloadToFile('/photos/zoo/giraffe.jpg');
    

루비

    # Require gcloud
    require "google/cloud"

    # Enable Cloud Storage
    gcloud = Google::Cloud.new "grape-spaceship-123", "/path/to/keyfile.json"
    storage = gcloud.storage

    # Reference an existing bucket.
    bucket = storage.bucket "my-existing-bucket"

    # Upload a file to the bucket.
    bucket.create_file "/photos/zoo/zebra.jpg", "zebra.jpg"

    # Download a file from your bucket.
    file = bucket.file "giraffe.jpg"
    file.download "/photos/zoo/#{file.name}"
    

REST API

클라이언트 라이브러리가 없는 언어를 사용 중이거나, 클라이언트 라이브러리가 수행하지 않는 작업을 수행하거나, 선호하는 HTTP 클라이언트가 있는 경우 Google Cloud Storage는 JSONXML 용 API를 모두 제공합니다. .

이러한 스토리지 데이터 액세스 API 외에도 Firebase 프로젝트에서 사용할 Cloud Storage 버킷을 관리하기 위해 Cloud Storage for Firebase API를 사용할 수 있습니다.

gsutil

gsutil 은 Cloud Storage에 직접 액세스할 수 있는 명령줄 도구입니다. gsutil 을 사용하여 다음을 비롯한 다양한 버킷 및 객체 관리 작업을 수행할 수 있습니다.

  • 개체 업로드, 다운로드 및 삭제.
  • 버킷 및 객체 나열.
  • 개체 이동, 복사 및 이름 바꾸기.
  • 객체 및 버킷 ACL 편집

gsutil 은 한 디렉터리에서 다른 디렉터리로 파일을 이동하거나 특정 위치 아래의 모든 파일을 삭제하는 등의 다른 고급 작업을 허용합니다.

한 참조에서 다른 참조로 모든 파일을 이동하는 것은 다음과 같이 쉽습니다:

gsutil mv gs://bucket/old/reference gs://bucket/new/reference

참조 아래의 모든 파일을 일괄 삭제하는 것도 비슷하게 직관적입니다.

# Delete all files under a path
gsutil rm -r gs://bucket/reference/to/delete

# Delete all the files in a bucket but not the bucket gsutil rm -r gs://bucket/**

# Delete all the files AND the bucket # Removing the default bucket will break the Firebase SDKs for Cloud Storage and is strongly discouraged gsutil rm -r gs://bucket

요청 비율

Google Cloud Storage는 자동 확장 기술을 사용하여 매우 높은 요청률을 달성하는 확장성이 뛰어난 서비스입니다.

Google Cloud Storage는 사용자가 동일한 기본 리소스 집합을 공유하는 다중 테넌트 서비스입니다. 이러한 공유 리소스를 최대한 활용하기 위해 버킷에는 초기 IO 용량이 있습니다.

Firebase용 Cloud Storage를 앱에 통합할 계획이라면 우수한 성능과 효율적인 요청을 위해 앱에 필요한 최소 요청 속도를 고려하세요. 요청률 에 대한 지침을 검토하고 특히 요청률을 높 입니다.

개체 버전 관리

실수로 무언가를 삭제하고 백업하지 않은 적이 있습니까? Google Cloud Storage는 데이터를 자동으로 백업하고 해당 백업에서 복원하는 객체 버전 관리 를 지원합니다. gsutil versioning set 명령어를 사용하여 객체 버전 관리를 사용 설정할 수 있습니다.

gsutil versioning set on gs://<your-cloud-storage-bucket>

Cloud Storage는 항상 가장 최신 버전을 선택하므로 개체를 복원하려면 위의 다른 API 또는 도구 중 하나를 사용하여 원하는 개체를 가장 최신으로 설정해야 합니다.

개체 수명 주기 관리

오래된 파일을 자동으로 보관하거나 삭제하는 기능은 많은 애플리케이션에서 유용한 기능입니다. 다행히 Google Cloud Storage는 객체 수명 주기 관리 를 제공하여 일정 시간이 지나면 객체를 삭제하거나 보관처리할 수 있습니다.

하루 안에 모든 사진을 삭제하려는 사진 공유 응용 프로그램을 고려하십시오. 다음과 같이 개체 수명 주기 정책을 설정할 수 있습니다.

// lifecycle.json
{
  "lifecycle": {
    "rule":
    [
      {
        "action": {"type": "Delete"},
        "condition": {"age": 1}
      }
    ]
  }
}

그리고 gsutil lifecycle set 명령어를 사용하여 배포합니다.

gsutil lifecycle set lifecycle.json gs://<your-cloud-storage-bucket>

이것은 버킷의 모든 파일에 적용되므로 매일 삭제하려는 사진과 함께 장기간 저장하려는 중요한 사용자 백업을 저장하는 경우 두 개의 별도 버킷을 사용하거나 수동으로 삭제를 수행할 수 있습니다. gsutil 또는 자체 서버로.

앱 엔진

App Engine은 수신하는 트래픽 양에 따라 백엔드 로직을 자동으로 확장하는 'Platform as a Service'입니다. 백엔드 코드를 업로드하기만 하면 Google에서 앱의 사용 가능 여부를 관리합니다. 프로비저닝하거나 유지 관리할 서버가 없습니다. App Engine은 Firebase 애플리케이션에 추가 처리 능력 또는 신뢰할 수 있는 실행을 추가하는 빠르고 쉬운 방법입니다.

Cloud Storage용 Firebase SDK는 App Engine 기본 버킷을 사용합니다. 즉, App Engine 앱을 빌드하면 내장된 App Engine API를 사용하여 Firebase와 App Engine 간에 데이터를 공유할 수 있습니다. 이는 오디오 인코딩, 비디오 트랜스코딩, 이미지 변환 및 기타 계산 집약적인 백그라운드 처리를 수행하는 데 유용합니다.

App Engine용 Java, Python 및 go Standard 환경 에는 App Engine 이미지 API( Java , Python )가 포함되어 있습니다. 이 API는 이미지의 크기를 조절하고 회전하고 뒤집고 자를 수 있을 뿐만 아니라 클라이언트측 변환을 허용하는 이미지 제공 URL을 반환할 수 있습니다. , Cloudinary 및 Imgix와 유사합니다.

기존 Google Cloud 프로젝트를 Firebase로 가져올 때 Firebase에서 기존 App Engine 개체를 사용할 수 있도록 하려면 gsutil 을 사용하여 다음 명령을 실행하여 Firebase가 개체에 액세스할 수 있도록 개체에 대한 기본 액세스 제어를 설정해야 합니다. :

gsutil -m acl ch -r -u service-<project number;gt@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

알려진 문제

App Engine 앱을 가져올 수 없는 두 가지 알려진 사례가 있습니다.

  1. 프로젝트에는 이전 App Engine Datastore 마스터/슬레이브 앱이 포함되어 있습니다.
  2. 프로젝트에는 도메인 프리픽스 프로젝트 ID가 있습니다(예: domain.com:project-1234 ).

두 경우 모두 프로젝트는 Firebase용 Cloud Storage를 지원하지 않으며 Cloud Storage를 사용하려면 새 Firebase 프로젝트를 만들어야 합니다. 도움을 드릴 수 있도록 지원팀에 문의 하세요.

Google Cloud Functions(베타)

Google Cloud Functions 는 서버나 런타임 환경을 관리할 필요 없이 이벤트에 응답하는 단일 용도의 작은 함수를 만들 수 있는 경량의 이벤트 기반 비동기 컴퓨팅 솔루션입니다. 이러한 함수는 동영상 트랜스코딩, 기계 학습을 사용한 이미지 분류 또는 Firebase 실시간 데이터베이스와 메타데이터 동기화에 사용할 수 있습니다. App Engine보다 오버헤드가 훨씬 적은 Cloud Functions는 Cloud Storage의 변경사항에 가장 빠르게 대응할 수 있는 방법입니다.

구글 클라우드 비전 API

Google Cloud Vision API를 사용하면 개발자가 사용하기 쉬운 API에 강력한 기계 학습 모델을 캡슐화하여 이미지의 콘텐츠를 이해할 수 있습니다. 이미지를 수천 개의 카테고리로 빠르게 분류하고, 이미지 내 개별 물체와 얼굴을 감지하고, 이미지에 포함된 인쇄된 단어를 찾아 읽고, 불쾌감을 주는 콘텐츠를 식별하고, 이미지 감정 분석까지 제공합니다.

구글 클라우드 스피치 API

Vision API와 마찬가지로 Google Cloud Speech API를 사용하면 개발자가 Cloud Storage에 저장된 오디오 파일에서 텍스트를 추출할 수 있습니다. API는 80개 이상의 언어와 변형을 인식하여 글로벌 사용자 기반을 지원합니다. Google Cloud Natural Language API 와 결합하면 개발자는 원시 텍스트를 추출하고 해당 텍스트에 대한 의미를 추론할 수 있습니다. 그리고 전 세계 청중이 필요한 경우 Google Translate API 와 결합하여 텍스트를 90개 이상의 언어로 번역합니다.