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:
- 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.
- 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
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
- Chọn JavaScript cho ngôn ngữ.
- Tùy chọn, bật ESLint.
- Nhập
y
để cài đặt phụ thuộc.
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'); }); });
- 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.
- Thay thế
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
Đi tới trang Chức năng đám mây trong Bảng điều khiển GCP:
- Bấm vào Tạo chức năng
- Nhập tên hàm như
firestoreExport
- Trong Trigger , chọn Cloud Pub/Sub
- 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. - 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.
- Thay thế
- Trong
package.json
, thêm phần phụ thuộc sau:{ "dependencies": { "@google-cloud/firestore": "^1.3.0" } }
- Trong Hàm cần thực thi , nhập
scheduledFirestoreExport
, tên của hàm trongindex.js
. - 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:
Chuyển đến trang Trình lập lịch đám mây trong Bảng điều khiển GCP:
- Nhấp vào Tạo công việc .
- Nhập Tên cho công việc, chẳng hạn như
scheduledFirestoreExport
. - Nhập Tần suất , ví dụ:
every 24 hours
. - Chọn Múi giờ .
- 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. - 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. - Nhấp vào Tạo .
Đị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ặcStorage Admin
trên nhóm
Bạn có thể sử dụng các công cụ dòng lệnh gcloud
và gsutil
để 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
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
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_ID và BUCKET_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.
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âyTrong 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ông và Lầ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.
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.
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: