Tích hợp với Google Cloud

Lưu trữ đám mây cho Firebase được tích hợp chặt chẽ với Google Cloud . SDK Firebase cho Lưu trữ đám mây lưu trữ tệp trực tiếp trong bộ chứa Google Cloud Storage và khi ứng dụng của bạn phát triển, bạn có thể dễ dàng tích hợp các dịch vụ khác của Google Cloud, chẳng hạn như điện toán được quản lý như App Engine hoặc Cloud Function hoặc API máy học như Cloud Vision hoặc Google Dịch.

Firebase sử dụng tài khoản dịch vụ Google Cloud để vận hành và quản lý dịch vụ mà không chia sẻ thông tin đăng nhập của người dùng. Khi tạo dự án Firebase sử dụng Cloud Storage, bạn có thể nhận thấy rằng tài khoản dịch vụ tương ứng đã có sẵn trong dự án của mình: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Xem hướng dẫn hỗ trợ Firebase này để biết thêm thông tin.

Về cơ bản, SDK Firebase cho Lưu trữ đám mây sử dụng bộ chứa mặc định trong bậc miễn phí của App Engine . Điều này cho phép bạn nhanh chóng thiết lập và chạy với Cloud Storage mà không cần phải nạp thẻ tín dụng hoặc kích hoạt tài khoản Cloud Billing. Nó cũng cho phép bạn dễ dàng chia sẻ dữ liệu giữa Firebase và dự án Google Cloud.

Việc tích hợp với Google Cloud, bao gồm cả việc nhập các bộ chứa Lưu trữ đám mây hiện có, yêu cầu dự án Firebase trên gói Blaze. Tìm hiểu thêm về các kế hoạch trên trang định giá của chúng tôi.

Lưu trữ đám mây của Google

Bạn có thể sử dụng API Google Cloud Storage để truy cập các tệp được tải lên qua SDK Firebase dành cho Lưu trữ đám mây, đặc biệt là để thực hiện các thao tác phức tạp hơn, chẳng hạn như sao chép hoặc di chuyển tệp hoặc liệt kê tất cả các tệp có sẵn tại một tài liệu tham khảo.

Điều quan trọng cần lưu ý là các yêu cầu này sử dụng các tùy chọn kiểm soát truy cập của Google Cloud Storage chứ không phải Quy tắc bảo mật của Cloud Storage và Xác thực Firebase.

API

Ngoài SDK Firebase dành cho Lưu trữ đám mây, còn có một số cách khác để truy cập dữ liệu được lưu trữ trong bộ chứa Lưu trữ đám mây của bạn, tùy thuộc vào những gì bạn muốn thực hiện. Nếu bạn đang truy cập dữ liệu trên máy chủ, chúng tôi cung cấp các thư viện phía máy chủ, cũng như API RESTful XML tương thích với JSON và S3 hoặc nếu bạn cần thay đổi tập lệnh hoặc thực hiện các tác vụ quản trị khác, chúng tôi có một công cụ dòng lệnh giúp bạn sẽ có ích.

SDK máy chủ Google Cloud

Google Cloud cung cấp SDK máy chủ chất lượng cao cho một số sản phẩm đám mây, bao gồm cả Cloud Storage. Các thư viện này có sẵn trong Node.js , Java , go , Python , PHPRuby .

Để biết thêm thông tin, bao gồm hướng dẫn cài đặt, xác thực và khắc phục sự cố, hãy tham khảo tài liệu dành riêng cho nền tảng được liên kết ở trên.

Ví dụ về việc sử dụng Google Cloud Storage SDK được hiển thị bên dưới:

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) {});
    

Java

    // 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();
    

Đi

    // 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)
    }
    

con trăn

    # 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');
    

hồng ngọc

    # 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}"
    

API REST

Nếu bạn đang sử dụng một ngôn ngữ không có thư viện ứng dụng khách, muốn làm điều gì đó mà thư viện ứng dụng khách không làm hoặc chỉ có một ứng dụng khách HTTP yêu thích mà bạn muốn sử dụng, thì Google Cloud Storage sẽ cung cấp API cho cả JSONXML .

Ngoài các API truy cập dữ liệu lưu trữ này, để quản lý các bộ chứa Lưu trữ đám mây để sử dụng trong các dự án Firebase, bạn có thể sử dụng API Lưu trữ đám mây cho Firebase .

gsutil

gsutil là một công cụ dòng lệnh cho phép bạn truy cập trực tiếp vào Cloud Storage. Bạn có thể sử dụng gsutil để thực hiện nhiều tác vụ quản lý bộ chứa và đối tượng, bao gồm:

  • Tải lên, tải xuống và xóa các đối tượng.
  • Liệt kê các thùng và các đối tượng.
  • Di chuyển, sao chép và đổi tên đối tượng.
  • Chỉnh sửa đối tượng và nhóm ACL.

gsutil cho phép thực hiện các thao tác nâng cao khác, chẳng hạn như di chuyển tệp từ thư mục này sang thư mục khác hoặc xóa tất cả tệp bên dưới một vị trí nhất định.

Di chuyển tất cả các tệp từ tham chiếu này sang tham chiếu khác dễ dàng như:

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

Xóa hàng loạt tất cả các tệp bên dưới tham chiếu cũng trực quan tương tự:

# 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

Giá yêu cầu

Google Cloud Storage là một dịch vụ có khả năng mở rộng cao, sử dụng công nghệ tự động thay đổi quy mô để đạt được tỷ lệ yêu cầu rất cao.

Google Cloud Storage là dịch vụ nhiều bên thuê, nghĩa là người dùng chia sẻ cùng một nhóm tài nguyên cơ bản. Để tận dụng tốt nhất các tài nguyên được chia sẻ này, các bộ chứa có dung lượng IO ban đầu.

Khi bạn định tích hợp Cloud Storage cho Firebase vào ứng dụng của mình, hãy nghĩ đến tỷ lệ yêu cầu tối thiểu mà ứng dụng của bạn cần để có hiệu suất tốt và về việc thực hiện các yêu cầu một cách hiệu quả. Xem lại các nguyên tắc về tỷ lệ yêu cầu và đặc biệt là tăng tỷ lệ yêu cầu .

Phiên bản đối tượng

Bạn đã bao giờ vô tình xóa thứ gì đó và không có bản sao lưu chưa? Google Cloud Storage hỗ trợ Lập phiên bản đối tượng , cung cấp cách tự động để sao lưu dữ liệu của bạn và khôi phục từ các bản sao lưu đó. Bạn có thể bật Lập phiên bản đối tượng bằng cách sử dụng lệnh gsutil versioning set :

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

Cloud Storage luôn chọn phiên bản mới nhất, vì vậy nếu muốn khôi phục một đối tượng, bạn cần sử dụng một trong các API hoặc công cụ khác ở trên để đặt đối tượng mong muốn là phiên bản mới nhất.

Quản lý vòng đời đối tượng

Có khả năng tự động lưu trữ hoặc xóa các tệp cũ là một tính năng hữu ích cho nhiều ứng dụng. May mắn thay, Google Cloud Storage cung cấp tính năng Quản lý vòng đời đối tượng , cho phép bạn xóa hoặc lưu trữ đối tượng sau một khoảng thời gian nhất định.

Cân nhắc một ứng dụng chia sẻ ảnh mà bạn muốn xóa tất cả ảnh trong vòng một ngày. Bạn có thể thiết lập chính sách vòng đời đối tượng như sau:

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

Và triển khai nó bằng lệnh gsutil lifecycle set :

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

Lưu ý rằng điều này áp dụng cho tất cả các tệp trong bộ chứa, vì vậy nếu bạn đang lưu trữ các bản sao lưu quan trọng của người dùng mà bạn muốn lưu trữ lâu dài cùng với ảnh phụ mà bạn muốn xóa hàng ngày, thì bạn có thể muốn sử dụng hai bộ chứa riêng biệt hoặc thực hiện thao tác xóa theo cách thủ công với gsutil hoặc máy chủ của riêng bạn.

Ứng dụng động cơ

App Engine là một "Nền tảng dưới dạng dịch vụ" tự động thay đổi quy mô logic phụ trợ để đáp ứng với lượng lưu lượng truy cập mà nó nhận được. Chỉ cần tải lên mã phụ trợ của bạn và Google sẽ quản lý tính khả dụng của ứng dụng của bạn; không có máy chủ để bạn cung cấp hoặc duy trì. App Engine là một cách nhanh chóng và dễ dàng để thêm sức mạnh xử lý bổ sung hoặc khả năng thực thi đáng tin cậy cho ứng dụng Firebase của bạn.

SDK Firebase cho Lưu trữ đám mây sử dụng bộ chứa mặc định của Máy ứng dụng, nghĩa là nếu bạn tạo ứng dụng Máy ứng dụng, bạn có thể sử dụng API Máy ứng dụng tích hợp để chia sẻ dữ liệu giữa Firebase và Máy ứng dụng. Điều này rất hữu ích để thực hiện mã hóa âm thanh, chuyển mã video và chuyển đổi hình ảnh, cũng như xử lý nền chuyên sâu tính toán khác.

Các môi trường Java, Python và go Tiêu chuẩn dành cho Máy ứng dụng bao gồm API hình ảnh của Máy ứng dụng ( Java , Python , có thể thay đổi kích thước, xoay, lật và cắt hình ảnh, cũng như trả về URL phân phối hình ảnh cho phép chuyển đổi phía máy khách , tương tự như Cloudinary và Imgix.

Khi nhập dự án Google Cloud hiện có vào Firebase, nếu bạn muốn cung cấp bất kỳ đối tượng Máy ứng dụng hiện có nào trong Firebase, bạn sẽ cần đặt kiểm soát truy cập mặc định trên các đối tượng của mình để cho phép Firebase truy cập chúng bằng cách chạy lệnh sau bằng cách sử dụng gsutil :

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

Vấn đề đã biết

Có hai trường hợp đã biết mà bạn không thể nhập ứng dụng App Engine của mình:

  1. Dự án chứa một ứng dụng Master/Slave Datastore Master trước đây của App Engine.
  2. Dự án có ID dự án có tiền tố tên miền, ví dụ: domain.com:project-1234 .

Trong cả hai trường hợp này, dự án sẽ không hỗ trợ Lưu trữ đám mây cho Firebase và bạn nên tạo một dự án Firebase mới để sử dụng Lưu trữ đám mây. Liên hệ với bộ phận hỗ trợ để chúng tôi có thể giúp bạn.

Google Cloud Function (Thử nghiệm)

Google Cloud Function là một giải pháp điện toán nhẹ, dựa trên sự kiện, không đồng bộ, cho phép bạn tạo các hàm nhỏ, đơn mục đích đáp ứng các sự kiện mà không cần quản lý máy chủ hoặc môi trường thời gian chạy. Các chức năng này có thể được sử dụng để chuyển mã video, phân loại hình ảnh bằng cách sử dụng máy học hoặc đồng bộ hóa siêu dữ liệu với Cơ sở dữ liệu thời gian thực của Firebase. Với chi phí thấp hơn cả App Engine, Cloud Functions là cách nhanh nhất để phản ứng với những thay đổi trong Cloud Storage.

Google Cloud Vision API

Google Cloud Vision API cho phép các nhà phát triển hiểu nội dung của hình ảnh bằng cách gói gọn các mô hình máy học mạnh mẽ trong một API dễ sử dụng. Nó nhanh chóng phân loại hình ảnh thành hàng nghìn danh mục, phát hiện các đối tượng và khuôn mặt riêng lẻ trong hình ảnh, tìm và đọc các từ in có trong hình ảnh, xác định nội dung xúc phạm và thậm chí cung cấp phân tích cảm xúc hình ảnh.

Google Cloud Speech API

Tương tự như API Vision, API Google Cloud Speech cho phép nhà phát triển trích xuất văn bản từ tệp âm thanh được lưu trữ trong Cloud Storage. API nhận dạng hơn 80 ngôn ngữ và biến thể để hỗ trợ cơ sở người dùng toàn cầu của bạn. Khi được kết hợp với Google Cloud Natural Language API , nhà phát triển có thể trích xuất văn bản thô và suy luận ý nghĩa về văn bản đó. Và nếu cần có khán giả toàn cầu, hãy kết hợp điều này với API Google Dịch để dịch văn bản sang hơn 90 ngôn ngữ.