FirestoreのバックアップをCloud Functionsで作成する


Firestoreは何かあったときのために自分でバックアップとっておく必要があるっぽい。
FirestoreのフルバックアップをGCSに保存する用のCloud Functions(Python)を作成する。

ソース

ランタイム環境変数として以下2つを設定

  • projectid:プロジェクトIDをセット
  • gcs_bucket:「gs://バケット名」の形でセット
main.py
from google.cloud import firestore_admin_v1
import os

def firestore_backup(request):

  projectid=os.environ['projectid']
  gcs_bucket=os.environ['gcs_bucket']
  request_body={"name":"projects/{}/databases/(default)".format(projectid),"output_uri_prefix":gcs_bucket}

  firestore = firestore_admin_v1.FirestoreAdminClient()
  export_return = firestore.export_documents(request=request_body)

  return 'OK'
requirements.txt
# Function dependencies, for example:
# package>=version
google-cloud-firestore == 2.0.2 

あとはCloud Schedulerから起動設定してあげれば良い

実行すると、以下のような感じでバックアップフォルダが作成され、そこの下にExportファイル、メタデータが作成される

注意点

バックアップ保存先のバケットのリージョン

Firestoreのデータベースのリージョンと同じリージョンのバケットにしか保存できないっぽい

参考

Google Cloud Client Libraries for google-cloud-firestore
googleapis/python-firestore
GCPドキュメント