Lên lịch xuất dữ liệu

Trang này mô tả cách lên lịch xuất dữ liệu Cloud Firestore của bạn. Để chạy xuất theo lịch, chúng tôi khuyên bạn nên sử dụng Chức năng đám mây và Trình lập lịch đám mây.

Trước khi bắt đầu

Trước khi lên lịch xuất dữ liệu được quản lý, bạn phải hoàn thành các tác vụ sau:

  1. Bật tính năng thanh toán cho dự án Google Cloud của bạn. Chỉ những dự án Google Cloud đã bật tính năng thanh toán mới có thể sử dụng tính năng xuất và nhập.
  2. Hoạt động xuất yêu cầu nhóm Lưu trữ đám mây đích. Tạo nhóm Cloud Storage ở vị trí gần vị trí cơ sở dữ liệu Cloud Firestore của bạn . Bạn không thể sử dụng nhóm Người yêu cầu thanh toán cho các hoạt động xuất.

Tạo chức năng đám mây và công việc Lập lịch trình đám mây

Thực hiện theo các bước bên dưới để tạo Hàm đám mây Node.js bắt đầu xuất dữ liệu Cloud Firestore và công việc Trình lập lịch đám mây để gọi hàm đó:

Firebase CLI
  1. Cài đặt Firebase CLI . Trong một thư mục mới, khởi tạo CLI cho Cloud Functions:

    firebase init functions --project PROJECT_ID
    1. Chọn JavaScript cho ngôn ngữ.
    2. Tùy chọn, bật ESLint.
    3. Nhập y để cài đặt phụ thuộc.
  2. Thay thế mã trong tệp functions/index.js bằng mã sau:

    const functions = require('firebase-functions');
    const firestore = require('@google-cloud/firestore');
    const client = new firestore.v1.FirestoreAdminClient();
    
    // Replace BUCKET_NAME
    const bucket = 'gs://BUCKET_NAME';
    
    exports.scheduledFirestoreExport = functions.pubsub
                                                .schedule('every 24 hours')
                                                .onRun((context) => {
    
      const projectId = process.env.GCP_PROJECT;
      const databaseName = 
        client.databasePath(projectId, '(default)');
    
      return client.exportDocuments({
        name: databaseName,
        outputUriPrefix: bucket,
        // Leave collectionIds empty to export all collections
        // or set to a list of collection IDs to export,
        // collectionIds: ['users', 'posts']
        collectionIds: []
        })
      .then(responses => {
        const response = responses[0];
        console.log(`Operation Name: ${response['name']}`);
      })
      .catch(err => {
        console.error(err);
        throw new Error('Export operation failed');
      });
    });
  3. Trong đoạn mã trên, sửa đổi như sau:
    • Thay thế BUCKET_NAME bằng tên nhóm của bạn.
    • Sửa đổi every 24 hours để đặt lịch xuất của bạn. Sử dụng cú pháp AppEngine cron.yaml hoặc định dạng unix-cron ( * * * * * ).
    • Sửa đổi collectionIds: [] để chỉ xuất các nhóm bộ sưu tập được chỉ định. Giữ nguyên để xuất tất cả các bộ sưu tập.

  4. Triển khai chức năng theo lịch trình:

    firebase deploy --only functions
Bảng điều khiển GCP
Tạo chức năng đám mây
  1. Đi tới trang Chức năng đám mây trong Bảng điều khiển GCP:

    Chuyển đến Chức năng đám mây

  2. Bấm vào Tạo chức năng
  3. Nhập tên hàm như firestoreExport
  4. Trong Trigger , chọn Cloud Pub/Sub
  5. Trong Chủ đề , chọn Tạo chủ đề mới . Nhập tên cho chủ đề pub/sub, chẳng hạn như initiateFirestoreExport . Hãy lưu ý tên chủ đề khi bạn cần để tạo công việc Trình lập lịch trình đám mây của mình.
  6. Trong Mã nguồn , chọn Trình soạn thảo nội tuyến . Nhập mã sau vào index.js :
    const firestore = require('@google-cloud/firestore');
    const client = new firestore.v1.FirestoreAdminClient();
    // Replace BUCKET_NAME
    const bucket = 'gs://BUCKET_NAME'
    
    exports.scheduledFirestoreExport = (event, context) => {
      const databaseName = client.databasePath(
        process.env.GCP_PROJECT,
        '(default)'
      );
    
      return client
        .exportDocuments({
          name: databaseName,
          outputUriPrefix: bucket,
          // Leave collectionIds empty to export all collections
          // or define a list of collection IDs:
          // collectionIds: ['users', 'posts']
          collectionIds: [],
        })
        .then(responses => {
          const response = responses[0];
          console.log(`Operation Name: ${response['name']}`);
          return response;
        })
        .catch(err => {
          console.error(err);
        });
    };
    Trong đoạn mã trên, sửa đổi như sau:
    • Thay thế BUCKET_NAME bằng tên nhóm của bạn.
    • Sửa đổi collectionIds: [] để chỉ xuất các nhóm bộ sưu tập được chỉ định. Giữ nguyên để xuất tất cả các bộ sưu tập.

  7. Trong package.json , thêm phần phụ thuộc sau:
    {
      "dependencies": {
        "@google-cloud/firestore": "^1.3.0"
      }
    }
  8. Trong Hàm cần thực thi , nhập scheduledFirestoreExport , tên của hàm trong index.js .
  9. Nhấp vào Tạo để triển khai Chức năng đám mây.
Tạo công việc Lập lịch trình đám mây

Tiếp theo, tạo công việc Trình lập lịch đám mây gọi Chức năng đám mây của bạn:

  1. Chuyển đến trang Trình lập lịch đám mây trong Bảng điều khiển GCP:

    Đi tới Trình lập lịch đám mây

  2. Nhấp vào Tạo công việc .
  3. Nhập Tên cho công việc, chẳng hạn như scheduledFirestoreExport .
  4. Nhập Tần suất , ví dụ: every 24 hours .
  5. Chọn Múi giờ .
  6. Trong Mục tiêu , chọn Pub/Sub . Trong trường Chủ đề , nhập tên của chủ đề pub/sub mà bạn đã xác định cùng với Chức năng đám mây của mình, initiateFirestoreExport trong ví dụ trên.
  7. Trong trường Tải trọng , nhập start export . Công việc yêu cầu tải trọng được xác định, nhưng Chức năng đám mây ở trên không thực sự sử dụng giá trị này.
  8. Nhấp vào Tạo .
Tại thời điểm này, bạn đã triển khai công việc Cloud Function và Cloud Scheduler, nhưng Cloud Function của bạn vẫn cần có quyền truy cập để thực hiện các hoạt động xuất.

Định cấu hình quyền truy cập

Tiếp theo, cấp cho Chức năng đám mây quyền bắt đầu các hoạt động xuất và ghi vào nhóm GCS của bạn.

Chức năng đám mây này sử dụng tài khoản dịch vụ mặc định của dự án của bạn để xác thực và ủy quyền cho các hoạt động xuất của dự án. Khi bạn tạo một dự án, một tài khoản dịch vụ mặc định sẽ được tạo cho bạn với tên sau:

PROJECT_ID@appspot.gserviceaccount.com

Tài khoản dịch vụ này yêu cầu quyền để bắt đầu thao tác xuất và ghi vào bộ chứa Cloud Storage của bạn. Để cấp các quyền này, hãy chỉ định các vai trò IAM sau cho tài khoản dịch vụ mặc định:

  • Cloud Datastore Import Export Admin
  • Vai trò Owner hoặc Storage Admin trên nhóm

Bạn có thể sử dụng các công cụ dòng lệnh gcloudgsutil để gán các vai trò này.

Nếu chưa được cài đặt, bạn có thể truy cập các công cụ này từ Cloud Shell trong Bảng điều khiển Google Cloud Platform:
Khởi động Cloud Shell

  1. Chỉ định vai trò Quản trị viên xuất nhập kho dữ liệu đám mây . Thay thế PROJECT_ID và chạy lệnh sau:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member serviceAccount:PROJECT_ID@appspot.gserviceaccount.com \
        --role roles/datastore.importExportAdmin
    
  2. Chỉ định vai trò Quản trị viên lưu trữ trên vùng lưu trữ của bạn. Thay thế PROJECT_IDBUCKET_NAME và chạy lệnh sau:

    gsutil iam ch serviceAccount:PROJECT_ID@appspot.gserviceaccount.com:admin \
        gs://BUCKET_NAME
    

Nếu bạn vô hiệu hóa hoặc xóa tài khoản dịch vụ mặc định của App Engine, ứng dụng App Engine của bạn sẽ mất quyền truy cập vào cơ sở dữ liệu Cloud Firestore của bạn. Nếu bạn đã vô hiệu hóa tài khoản dịch vụ App Engine của mình, bạn có thể kích hoạt lại tài khoản đó, xem cách bật tài khoản dịch vụ . Nếu bạn đã xóa tài khoản dịch vụ App Engine của mình trong vòng 30 ngày qua, bạn có thể khôi phục tài khoản dịch vụ của mình, xem phần hủy xóa tài khoản dịch vụ .

Kiểm tra công việc Trình lập lịch đám mây và Chức năng đám mây của bạn

Bạn có thể kiểm tra công việc Trình lập lịch đám mây của mình trên trang Trình lập lịch đám mây của Bảng điều khiển nền tảng đám mây của Google.

  1. Chuyển đến trang Trình lập lịch đám mây trong Bảng điều khiển GCP.
    Đi tới Trình lập lịch đám mây

  2. Trong hàng dành cho tác vụ Cloud Scheduler mới của bạn, hãy nhấp vào Chạy ngay .

    Sau vài giây, công việc Cloud Scheduler sẽ cập nhật cột kết quả thành Thành côngLần chạy cuối cùng về thời điểm hiện tại. Bạn có thể cần phải bấm vào Làm mới .

Trang Trình lập lịch đám mây chỉ xác nhận rằng công việc có tên Chức năng đám mây của bạn. Mở trang Chức năng đám mây để xem nhật ký chức năng của bạn.

Xem nhật ký chức năng đám mây

Để xem Chức năng đám mây có khởi động thao tác xuất thành công hay không, hãy mở nhật ký của chức năng:

Bảng điều khiển Firebase

Chuyển đến trang Chức năng đám mây trong bảng điều khiển Firebase.

Đi tới Nhật ký chức năng

Bảng điều khiển GCP

Đi tới trang Chức năng đám mây trong Bảng điều khiển GCP.

Chuyển đến Trình xem nhật ký

Xem tiến trình xuất

Bạn có thể sử dụng lệnh gcloud firestore operations list để xem tiến trình hoạt động xuất của mình, xem quản lý hoạt động xuất và nhập .

Sau khi thao tác xuất hoàn tất, bạn có thể xem các tệp đầu ra trong nhóm Cloud Storage của mình:

Mở trình duyệt Cloud Storage