Firestore의 자동 백업으로 집계
공식 절차
수동 백업
htps : // 푹 빠져라. 오, ぇ. 코 m / 드 cs / 푹신 s 잡아 / 마나게-다타 / 에 x 포 rt-이 m 포 rt? hl = 그럼
자동 백업
htps : // 푹 빠져라. 오, ぇ. 코 m / 드 cs / 푹신 s 잡아 / 소 치온 s / s 치 ぇ ぇ ㅇ x 포 rt? hl = 그럼
버킷을 만드는 방법
상기 어느 쪽을 실시하는 경우도, 우선 먼저 버킷을 만들 필요가 있습니다만 이하를 참고로 작성했습니다.
htps : // 니포. sdd 보 x. jp /에서 ゔ ぉ p-b ぉ g / 푹신하다 s cp
스토리지는 GCP 관리 화면의 왼쪽 메뉴에 있는 제품 > 스토리지에 있습니다.
나는 버킷의 이름을 [PROJECT_ID]-export했다.
로컬로 파일 세트를 init
Cloud Functions 소스 파일을 포함하는 폴더를 만듭니다. 나는
/Users/takuya/Development/[PROJECT_NAME]-functions
라는 계층 구조와 이름으로 만들었습니다. 처음에 상자를 만들지 않으면 init했을 때 지금 있는 장소에 여러가지 규칙 파일 등이 생겨버립니다.$ cd [PROJECT_NAME]-functions # さっき作ったフォルダに移動
$ firebase init functions --project PROJECT_ID
# PROJECT_ID は小文字
JavaScript나 TypeScript를 선택하라고 합니다만, 공식의 순서에서는 Javascript를 선택(단 굉장한 사람들은 Cloud Functions에서는 TypeScript를 사용하는 것을 추천하고 있는 사람이 많은 인상).
ESLint를 사용할지 묻는 디폴트에서는
N
(즉 No)가 되어 있습니다만 나는 넣었습니다. 코드의 버그를 찾아 주는 것이고 TypeScript라면 디폴트 Y
그래서 컴파일이 불필요한 JavaScript에서는 필요하지 않다(VSCode등의 에디터로 경고해 주기 때문에)일까?index.js 편집
여기를 편집하지 않고 배포하면 오류가 발생하므로 편집 후 배포하도록 합니다.
또한 백업 시간은 내가 unix-cron 문자열 형식
(* * * * *)
로 작성했습니다.htps : // c ぉ d. 오, ぇ. 이 m / s 치 즈 ぇ r / 두 cs / 속눈썹 s / s 치 ぇ ぇ ふぃえ lds. pg? hl = 그럼
미국 시간임에 주의.
또 Node.js 10 에서는
process.env.GCP_PROJECT
의 한 문장을 추가하지 않으면 Cannot read property 'toString' of undefined
라는 에러가 나오는 것도 공식적으로 기술하지 않는다.index.js
const functions = require("firebase-functions");
const firestore = require("@google-cloud/firestore");
const client = new firestore.v1.FirestoreAdminClient();
// Replace BUCKET_NAME
const bucket = "gs://バケット名";
exports.scheduledFirestoreExport = functions.pubsub
.schedule("45 19 * * *") // 好きな時間帯:私は19:45(日本時間2:45)にしました
.onRun((context) => {
const projectId = process.env.GCP_PROJECT || process.env.GCLOUD_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"]}`);
return response;
})
.catch((err) => {
console.error(err);
throw new Error("Export operation failed");
});
});
Cloud Functions 배포
$ firebase deploy --only functions
--only functions
를 붙이지 않으면 기존의 FireStore나 Realtime Database등이 덮어쓰여져 버릴 것이므로 주의!Cloud Scheduler 위치
공식 링크에서는 이상한 톱 화면으로 날아간다.
우선 'API와 서비스'에서 'Cloud Scheduler'를 검색하여 추가한다.
추가 후의 대시보드에서는 이용 상황이나 인증 정보 등 밖에 볼 수 없고 여기에서는 실행할 수 없다.
홈으로 돌아와 왼쪽 메뉴 아래쪽으로 스크롤하면 "Cloud Scheduler"가 있으므로 클릭하면 여기에 작업이되어있을 것.
今すぐ実行
버튼을 찾을 수 있습니다.아래와 같이 핀 고정해 두면 위쪽에 "Cloud Scheduler"가 와서 이후 사용하기 쉽다.
그리고는 공식대로의 순서로 문제 없게 갈 수 있었습니다.
참고
Reference
이 문제에 관하여(Firestore의 자동 백업으로 집계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/maztak/items/75e65f7bde483af05609텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)