Trang này mô tả cách lên lịch xuất dữ liệu Dữ liệu Cloud Firestore. Để chạy tệp xuất theo lịch, bạn nên bằng Cloud Functions và Cloud Scheduler.
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 tất những việc sau:
- Bật cho dự án Google Cloud của bạn. Chỉ có Google Cloud các dự án đã bật thanh toán có thể sử dụng tính năng xuất và nhập.
- Các thao tác xuất cần có bộ chứa Cloud Storage đích. Tạo một bộ chứa Cloud Storage ở một vị trí gần Cloud Firestore của bạn vị trí cơ sở dữ liệu. Bạn không thể dùng bộ chứa Requester Pays để xuất các toán tử.
Tạo một Hàm đám mây và một công việc Cloud Scheduler
Hãy làm theo các bước bên dưới để tạo Hàm đám mây Node.js bắt đầu một lượt xuất dữ liệu Cloud Firestore và một công việc Cloud Scheduler để gọi hàm đó:
Giao diện dòng lệnh (CLI) của Firebase
-
Cài đặt Firebase CLI. Trong thư mục mới, hãy khởi chạy CLI cho Cloud Functions:
firebase init functions --project PROJECT_ID
- Chọn JavaScript cho ngôn ngữ.
- Bạn có thể bật ESLint (không bắt buộc).
- Nhập
y
để cài đặt các phần phụ thuộc.
-
Thay thế mã trong tệp
functions/index.js
bằng 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 mã trên, hãy sửa đổi những nội dung sau:
- Thay thế
BUCKET_NAME
bằng tên của bộ chứa. - Hãy sửa đổi
every 24 hours
để đặt lịch xuất. Sử dụng một trong hai Cú pháp AppEngine cron.yaml hoặc định dạng unix-cron (* * * * *
). -
Sửa đổi
collectionIds: []
để chỉ xuất dữ liệu được chỉ định bộ sưu tập. Để nguyên để xuất tất cả bộ sưu tập.
- Thay thế
-
Triển khai hàm được lên lịch:
firebase deploy --only functions
Google Cloud Console
Tạo một hàm đám mây
-
Truy cập vào trang Cloud Functions trong bảng điều khiển Google Cloud:
- Nhấp vào Create Function (Tạo hàm)
- Nhập tên hàm, chẳng hạn như
firestoreExport
- Trong mục Trình kích hoạt, hãy chọn Cloud Pub/Sub
- Trong mục Chủ đề, hãy chọn Tạo chủ đề mới. Nhập tên cho
chủ đề pub/sub, chẳng hạn như
initiateFirestoreExport
. Ghi lại tên chủ đề là bạn cần nó để tạo công việc Cloud Scheduler của mình. - Trong phần Mã nguồn, hãy chọn Trình chỉnh sửa cùng dòng. Nhập
dưới đây trong
index.js
: Trong mã trên, hãy sửa đổi những nội dung sau: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); }); };
- Thay thế
BUCKET_NAME
bằng tên của bộ chứa. -
Sửa đổi
collectionIds: []
để chỉ xuất dữ liệu được chỉ định bộ sưu tập. 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 phần Hàm để thực thi, hãy nhập
scheduledFirestoreExport
, phương thức tên của hàm trongindex.js
. - Nhấp vào Tạo để triển khai Hàm đám mây.
Tạo một công việc trên Cloud Scheduler
Tiếp theo, hãy tạo một công việc Cloud Scheduler để gọi Hàm đám mây của bạn:
-
Chuyển đến trang Cloud Scheduler trong bảng điều khiển Google Cloud:
- 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 phần Target (Mục tiêu), hãy chọn Pub/Sub. Trong trường Chủ đề,
nhập tên của chủ đề xuất bản/phụ đề mà bạn đã xác định cùng với
Hàm đám mây,
initiateFirestoreExport
trong ví dụ ở trên. - Trong trường Payload (Gói dữ liệu), hãy nhập
start export
. Công việc đòi hỏi một tải trọng được xác định, nhưng Hàm đám mây ở trên thì cần không thực sự sử dụng tính năng này giá trị. - Nhấp vào Tạo.
Định cấu hình quyền truy cập
Tiếp theo, hãy cấp cho Cloud Function quyền bắt đầu xuất và ghi vào bộ chứa GCS.
Hàm đám mây này sử dụng tài khoản dịch vụ mặc định của dự án để xác thực và uỷ quyền cho hoạt động xuất dữ liệu. Khi bạn tạo một dự án, một tài khoản dịch vụ mặc định được tạo cho bạn với tên sau đây:
PROJECT_ID@appspot.gserviceaccount.com
Tài khoản dịch vụ này cần có quyền để bắt đầu xuất và để ghi vào bộ chứa Cloud Storage. Để cấp quyền hãy chỉ định các vai trò IAM sau đây cho tài khoản dịch vụ mặc định:
Cloud Datastore Import Export Admin
-
Vai trò
Owner
hoặcStorage Admin
trên bộ chứa
Bạn có thể sử dụng dòng lệnh gcloud
và gsutil
để chỉ định vai trò này.
Nếu chưa cài đặt, bạn có thể truy cập vào các
các công cụ của Cloud Shell trong bảng điều khiển Google Cloud:
Bắt đầu Cloud Shell
-
Chỉ định vai trò Quản trị viên dịch vụ Xuất nhập của Cloud Datastore. Thay thế PROJECT_ID rồi 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 bộ nhớ đối với bộ chứa của bạn. Thay thế PROJECT_ID và BUCKET_NAME, đồng thời 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 hoá hoặc xoá tài khoản dịch vụ mặc định của App Engine, Ứng dụng App Engine sẽ mất quyền truy cập vào cơ sở dữ liệu Cloud Firestore của bạn. Nếu đã vô hiệu hoá tài khoản dịch vụ App Engine, bạn có thể bật lại tài khoản đó, hãy xem phần bật tài khoản dịch vụ. Nếu bạn đã xoá tài khoản dịch vụ App Engine 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 huỷ xoá tài khoản dịch vụ.
Kiểm thử công việc Cloud Scheduler và Chức năng đám mây
Bạn có thể kiểm tra công việc Cloud Scheduler của mình trên trang Cloud Scheduler của bảng điều khiển Google Cloud.
Truy cập vào trang Cloud Scheduler trong bảng điều khiển Google Cloud.
Chuyển đến Cloud SchedulerTrong hàng cho công việc Cloud Scheduler mới, 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 kết quả thành Success (Thành công) và Last run (Lần chạy gần đây nhất) thành thời gian hiện tại. Bạn có thể cần để nhấp vào Làm mới.
Trang Cloud Scheduler chỉ xác nhận rằng công việc này đã gọi Chức năng đám mây. Mở trang Hàm đám mây để xem nhật ký của hàm.
Xem nhật ký Chức năng đám mây
Để xem liệu Hàm trên đám mây có bắt đầu thành công một thao tác xuất hay không, hãy mở nhật ký của hàm:
Bảng điều khiển của Firebase
Chuyển đến trang Cloud Functions trong bảng điều khiển của Firebase.
Bảng điều khiển Google Cloud Platform
Truy cập vào trang Cloud Functions trong bảng điều khiển Google Cloud.
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 của các thao tác xuất, hãy xem phần quản lý các thao tác xuất và nhập.
Sau khi hoàn tất thao tác xuất, bạn có thể xem các tệp đầu ra trong Cloud Storage bộ chứa: