Firestore의 자동 백업으로 집계

9368 단어 FirebasegcpFirestore
기본은 공식의 순서에 따를 때까지입니다만, 어디선가 망설였으므로 메모.

공식 절차



수동 백업
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"가 와서 이후 사용하기 쉽다.


그리고는 공식대로의 순서로 문제 없게 갈 수 있었습니다.

참고


  • h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s Chion s / 62857952 / Kano t-re dp 로페 티와 st rin g-f 음, 푹신 드우 푹신 s 트레 Uld-runba c ps
  • 좋은 웹페이지 즐겨찾기