Edited at

Firestoreのデータをgcloudを使ってバックアップ&別のプロジェクトへインポートしてみる

Firestoreのデータをガリガリ見ていきたいなと思っていたら、

別のプロジェクトに移行できそうだったので、いろいろ調べたときの備忘録。

分析目的だけど、BigQueryは1000カラム制約で使えなかったので代替案...

別プロジェクトなら無料枠でいろいろできそう。

いろいろ試したけど、ダメだった経緯はこちらにまとめました。。

- Firestoreのデータを分析するための3つの方法とその注意点 - Qiita


注意

Firestoreのエクスポート/インポートについて、いくつか注意。


  1. Firestoreのエクスポート/インポートはBlazeプランが必要(無料枠では不可)

  2. ドキュメントの読み取りと書き込み時にCloud Firestoreの料金が課金される

さらに、


エクスポート / インポート オペレーションのコストは、費用制限の対象にはなりません

オペレーションが完了するまで、エクスポート/インポートでGCPの予算アラートはトリガーされません


とのことなので、ご利用は計画的に..



1. gcloudのインストール


インストール

$ brew cask install google-cloud-sdk


.bashrcなどに以下を追記

source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc'

source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc'


gcloudの初期化

# 初期設定の実行

$ gcloud init
# このあと、ログイン画面が出てきて認証する

# コンポーネントのアップデート
$ gcloud components update

# 現在のプロジェクトの確認
$ gcloud info | grep project


2. FirestoreのデータをExportする

firestore exportを使うと、データのバックアップが作成できるらしい。

バックアップデータはGCPのStorage上に作成されるので、

あらかじめ、Storageを作成しておく必要がある。

# 現在のプロジェクトの確認

$ gcloud info | grep project

# 全体のエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME]

# コレクションを指定して、一部だけをエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2]

# 実行状況の確認
$ gcloud beta firestore operations list

データ量が多いと、コマンドが途中で終了するので、

完了したかどうかはoperations listを実行して確認する必要がある。

参考: データのエクスポートとインポート  |  Firebase


3. プロジェクトを変更する

# プロジェクトの設定

$ gcloud config set project [PROJECT]

# 現在の設定情報の確認
$ gcloud info

参考: SDK 構成の管理  |  Cloud SDK のドキュメント  |  Google Cloud


4. アカウントを変更する

# アカウントの設定

$ gcloud config set account [ACCOUNT]

# 設定したアカウントの認証
$ gcloud auth login

# 登録しているアカウントの一覧を確認
$ gcloud auth list

# プロジェクトの設定
$ gcloud config set project [PROJECT]

# 現在の設定情報の確認
$ gcloud info

参考: Cloud SDK ツールの承認  |  Cloud SDK のドキュメント  |  Google Cloud


5. バックアップを別のプロジェクトにインポートする

全体の流れはこんな感じ。

# バックアップしたいプロジェクトに設定

$ gcloud config set project [PROJECT]

# 全体のエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME]

# 別のプロジェクトにプロジェクトに変更
$ gcloud config set project [PROJECT]

# バックアップファイルのインポート
$ gcloud beta firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

注意点


  1. インポートしたいプロジェクトのFirestoreは初期設定までする必要がある

  2. 実行はプロジェクトのサービスアカウントで実行されるので、

    バックアップファイルのバケットに権限を付与する必要がある

参考: データのエクスポートとインポート  |  Firebase


おわりに

有料のみではあるけど、


  1. 本番データの分析したり

  2. 本番データを開発用に利用したり

  3. プロジェクトの移行

なんかにも使えそう。

分析はBigQueryを使えるならそのほうがいいかも?


こんなのつくってます!!

積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!

積読ハウマッチは、Nuxt.js+Firebaseで開発してます!

もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ

要望・感想・アドバイスなどあれば、

公式アカウント(@MemoryLoverz)や開発者(@kira_puka)まで


参考にしたサイト