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 dành cho Cloud Storage lưu trữ các 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ư điện toán được quản lý như App Engine hoặc Cloud Functions hoặc API học máy 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 xác thực 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 dành cho Cloud Storage 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à sử dụng 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 cả việc nhập nhóm Cloud Storage 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 định giá của chúng tôi.

Bộ nhớ đá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 Cloud Storage, đặ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à những yêu cầu này sử dụng tùy chọn kiểm soát truy cập Google Cloud Storage thay vì Quy tắc xác thực Firebase và Bảo mật lưu trữ đám mây.

API

Ngoài SDK Firebase dành cho Cloud Storage, còn có một số cách khác để truy cập dữ liệu được lưu trữ trong nhóm Cloud Storage, tùy thuộc vào việc 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 sẽ cung cấp các thư viện phía máy chủ cũng như API RESTful XML tương thích 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ó công cụ dòng lệnh. 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ề cách 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)
    }
    

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

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 thực hiện điều gì đó mà thư viện ứng dụng khách không làm hoặc chỉ có ứng dụng khách HTTP yêu thích mà bạn muốn sử dụng, 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ý nhóm Cloud Storage nhằm sử dụng trong các dự án Firebase, bạn có thể sử dụng API Cloud Storage 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ý đối tượng và nhóm, 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 đối tượng.
  • Chỉnh sửa ACL đối tượng và 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 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

Yêu cầu giá

Google Cloud Storage là 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à dịch vụ có 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 nhóm có dung lượng IO ban đầu.

Khi bạn dự đị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à cách thực hiện 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 một cái 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 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àm đối tượng mới nhất.

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

Khả năng tự động lưu trữ hoặc xóa các tập tin 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 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 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ữ trong thời gian dài cùng với các ảnh 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 dưới dạng 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 mã phụ trợ của bạn lê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ủ nào để bạn cung cấp hoặc bảo trì. App Engine là một cách nhanh chóng và dễ dàng để bổ sung 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 Cloud Storage sử dụng nhóm mặc định của App Engine, nghĩa là nếu bạn xây dựng một ứng dụng App Engine, bạn có thể sử dụng 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 tính toán khác.

Các môi trường Java, Python và go Tiêu chuẩn 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 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 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 gsutil :

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

Sự cố đã 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 cũ của App Engine Datastore.
  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 dự án Firebase mới để sử dụng Cloud Storage. Hãy liên hệ với bộ phận hỗ trợ để chúng tôi có thể giúp bạn.

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

Google Cloud Functions là một giải pháp điện toán không đồng bộ, dựa trên sự kiện, gọn nhẹ, 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 Firebase. Với chi phí thậm chí còn thấp hơn App Engine, Cloud Functions là cách nhanh nhất để phản ứng với những thay đổi trong Cloud Storage.

API tầm nhìn đám mây của Google

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 gói gọn 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 danh mục, phát hiện từng vật thể và khuôn mặt 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 về hình ảnh.

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

Tương tự như Vision API, Google Cloud Speech API 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 kết hợp với API ngôn ngữ tự nhiên của Google Cloud , 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 kết hợp tính năng này với API Google Translate để dịch văn bản sang hơn 90 ngôn ngữ.