CloudScheduler + CloudFirestoreAPIでコードを書かずに定期バックアップデータが作成できたので紹介します。
WorkFlowsを使った記事もありましたが、WorkFlowsをはさまなくてもバックアップ可能でした。
公式ではScheduler + Functionsを使う方法が紹介されいます。各プロジェクトに適した方法を採用してください。
- Google Cloud プロジェクトに対する課金を有効
- バックアップ用のストレージ作成
- サービスアカウントに権限を付与
- スケジューラーの設定
2. バックアップ用のストレージ作成
プロジェクトと別のロケーションを選択するとAPI実行時にstatus: "INVALID_ARGUMENT"
というエラーがでるので注意。
3. サービスアカウントに権限を付与
管理画面からサービスアカウントを新規で作成する場合は以下のロールを付与。
- Cloud Datastore インポート / エクスポート管理者
- Storage オブジェクト 作成者(公式は管理者)
4. スケジューラーの設定
Cloud FireStoreのexportDocumentsAPIを定期実行します。
TH | TH |
---|---|
頻度 | 0 1 * * * |
ターゲットタイプ | HTTP |
URL | https://firestore.googleapis.com/v1/projects/${PROJECT_ID}/databases/(default):exportDocuments |
HTTPメソッド | POST |
本文 | {"outputUriPrefix":"gs://${バケット名}"} |
Authヘッダー | Authトークンを追加 |
サービスアカウント | サービスアカウントに権限を付与でアクセス権限を付与したアカウントを指定 |
範囲 | https://www.googleapis.com/auth/cloud-platform |
確認する
Cloud Schedulerの今すぐ実行ボタンを押す。
Cloud Storageに実行した日時のフォルダができていればOK。
以上です。