Tích hợp với Google Cloud

Cloud Storage cho Firebase được tích hợp chặt chẽ với Google Cloud . SDK Firebase cho Cloud Storage lưu trữ tệp trực tiếp trong nhóm 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ụ Google Cloud khác, chẳng hạn như máy tính được quản lý như App Engine hoặc Cloud Functions hoặc các API máy học như Cloud Vision hoặc Google Phiên dịch.

Firebase sử dụng các tài khoản dịch vụ Google Cloud để vận hành và quản lý các dịch vụ mà không cần chia sẻ thông tin đăng nhập của người dùng. Khi bạn tạo một dự án Firebase sử dụng Cloud Storage, bạn có thể nhận thấy rằng một tài khoản dịch vụ tương ứng đã có sẵn trong dự án của bạn: 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 Bộ nhớ đám mây sử dụng nhóm mặc định trong cấp 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 nhậ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 nhập các nhóm Bộ nhớ đám mây hiện có, yêu cầu phải có dự án Firebase trên gói Blaze. Tìm hiểu thêm về các gói trên trang giá của chúng tôi.

Google Cloud Storage

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 cho Cloud Storage, đặc biệt là để thực hiện các hoạt động 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 tham chiếu.

Điều quan trọng cần lưu ý là những yêu cầu này sử dụng các tùy chọn kiểm soát quyền truy cập Google Cloud Storage, thay vì Xác thực Firebase và Quy tắc bảo mật lưu trữ đám mây.

API

Ngoài SDK Firebase cho Bộ nhớ đám mây, có một số cách khác để truy cập dữ liệu được lưu trữ trong nhóm Bộ nhớ đám mây của bạn, tùy thuộc vào những gì bạn muốn làm. 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. sẽ có ích.

SDK máy chủ đám mây của Google

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.

Cách sử dụng mẫu cho SDK lưu trữ đám mây của Google đượ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)
    }
    

Python

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

Ruby

    # 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à các 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, Google Cloud Storage cung cấp các API cho cả JSONXML .

Ngoài các API truy cập dữ liệu lưu trữ này, để quản lý nhóm Lưu trữ đám mây để sử dụng trong các dự án Firebase, bạn có thể sử dụng Lưu trữ đám mây cho API 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ý nhóm 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 nhóm và đối tượng.
  • Di chuyển, sao chép và đổi tên các đối tượng.
  • Chỉnh sửa đối tượng và ACL nhóm.

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ả cá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 một tham chiếu cũng tương tự trực quan:

# 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

Yêu cầu tỷ lệ

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 mở rộng quy mô để đạt được tỷ lệ yêu cầu rất cao.

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

Khi bạn định tích hợp Bộ nhớ đám mây cho Firebase vào ứng dụng của mình, hãy nghĩ về 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 đưa ra yêu cầu một cách hiệu quả. Xem lại 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ờ xóa một cái gì đó một cách tình cờ và không có bản sao lưu? Google Cloud Storage hỗ trợ Tạo phiên bản đối tượng , cung cấp một 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 versioning set gsutil :

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 bạn 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àm 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 Quản lý vòng đời đối tượng , cho phép bạn xóa hoặc lưu trữ các đối tượng sau một khoảng thời gian nhất định.

Hãy xem xét 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 cách sử dụng lệnh lifecycle set gsutil :

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 nhóm, 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 các ảnh bên mà bạn muốn xóa hàng ngày, bạn có thể muốn sử dụng hai nhóm riêng biệt hoặc thực hiện 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 như một dịch vụ" tự động điều chỉnh 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 vào ứng dụng Firebase của bạn.

SDK Firebase cho Bộ nhớ đám mây sử dụng nhóm mặc định của App Engine, có nghĩa là nếu bạn tạo ứng dụng App Engine, bạn có thể sử dụng các API App Engine tích hợp để chia sẻ dữ liệu giữa Firebase và App Engine. Đ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 về tính toán khác.

Môi trường Java, Python và go Standard cho App Engine bao gồm API hình ảnh của App Engine ( 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 cung cấp 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 một 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 App Engine hiện có nào trong Firebase, bạn cần đặt điều khiển 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 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>

Các vấn đề đã biết

Có hai trường hợp đã biết khiến 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 App Engine Datastore Master / Slave trước đây.
  2. Dự án có ID dự án có tiền tố tên miền, ví dụ: domain.com:project-1234 .

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

Các chức năng đám mây của Google (Beta)

Google Cloud Functions là một giải pháp tính toán không đồng bộ dựa trên sự kiện, nhẹ, cho phép bạn tạo các hàm nhỏ, có mục đích duy nhất, đá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 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 App Engine, Chức năng đám mây là cách nhanh nhất để phản ứng với những thay đổi trong Bộ nhớ đám mây.

API Google Cloud Vision

API Google Cloud Vision cho phép các nhà phát triển hiểu nội dung của hình ảnh bằng cách đóng gói các mô hình học máy 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 loại, 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ừ được 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.

API giọng nói đám mây của Google

Tương tự như API Vision, API Google Cloud Speech cho phép các 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 API ngôn ngữ tự nhiên của Google Cloud , các nhà phát triển có thể vừa trích xuất văn bản thô vừa suy ra ý nghĩa về văn bản đó. Và nếu cần có khán giả toàn cầu, hãy ghép nối điều này với API Google Dịch để dịch văn bản sang hơn 90 ngôn ngữ.