firestoreのバックアップを自動化する

0

2022年04月25日 7:34

こんにちは、ISSUEの寒河江です。

今回はfirestoreの自動バックアップを実装手順を説明します。CLIでの手動バックアップ記事は結構あるのですが、スケジューリングされた自動バックアップの記事があまりなかったので今回書いてみました。皆さんの実装の参考になれば幸いです。

実はしっかり公式ドキュメントがある

データのエクスポートをスケジュールする

このページを読んでしまえば実装すること可能です!ただ、実装してみて実際どうなのか、どこら辺が大変だったかなども含めて私の方で説明できたらと思います。

成果物

google storageへの保存先: gs://:projectID.appspot.com/firestore_backup/2022-04-25/auto or manualにfirestoreのバックアップデータが保存される(手動実行ならmanual, スケジュールによる自動実行ならautoのパスになります)
発火時間: 毎朝4時

バックアップ用のCloud functionsを作成する

プロジェクトの課金設定は終わっている前提で進めます。

このセクションを実装すると下記コマンドで手動バックアップが取れるようになります
img

バックアップ関数
img

バックアップ関数を実行するcallableを定義する
img

関数のデプロイ
img
保存が完了するとstorageでは下記のようにアクセスできます。

バックアップ用のCloud functionsをスケジューリングする

先ほどの実装をスケジューリングで自動化します。

img

関数のデプロイ
img

functionsにアクセス権限を付与する

Cloud Functionに、エクスポートオペレーションを開始する権限と GCSバケットに書き込む権限を付与しましょう。この作業をしていないとパーミッションエラーになります。
img

Cloud Datastore インポート / エクスポート管理者の付与
img

ストレージ管理者の付与
img

スケジューラーの実行

Cloud Schedulerでデプロイしたスケジューラーを実行してみましょう!成功すると下記のようにバックアップデータが保存されています。

リストアについて

リストアはストレージのバックアップデータをfirestoreにインポートする操作になります。こちらも公式のドキュメントがあります。

注意

gcloud config listで開発用のプロジェクトに接続されているか確認しましょう!

実行コマンド
先ほどのバックアップデータを適用します。
img
コレクション単位でリストアすることも可能なので詳しくは公式ドキュメントを参照ください。

毎日スケジューリングする場合は必要気をつける

ドキュメントのバックアップにも通常のfirestoreの料金が発生します。毎日スケジューリングしている場合はそれなりの費用が発生する可能性があります。念の為手動実行などで料金を確認しておいた方がいいと思います。

以前は費用は発生しなかった気がするけど気のせいですかね...

image

以上、firestoreのデータバックアップでした!

# Firebase
# Firestore
# TypeScript
# Node.js
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。

目次を見る