Firestoreのデータをガリガリ見ていきたいなと思っていたら、
別のプロジェクトに移行できそうだったので、いろいろ調べたときの備忘録。
分析目的だけど、BigQueryは1000カラム制約で使えなかったので代替案...
別プロジェクトなら無料枠でいろいろできそう。
いろいろ試したけど、ダメだった経緯はこちらにまとめました。。
注意
Firestoreのエクスポート/インポートについて、いくつか注意。
- Firestoreのエクスポート/インポートはBlazeプランが必要(無料枠では不可)
- ドキュメントの読み取りと書き込み時に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]/
注意点
- インポートしたいプロジェクトのFirestoreは初期設定までする必要がある
- 実行はプロジェクトのサービスアカウントで実行されるので、
バックアップファイルのバケットに権限を付与する必要がある
参考: データのエクスポートとインポート | Firebase
おわりに
有料のみではあるけど、
- 本番データの分析したり
- 本番データを開発用に利用したり
- プロジェクトの移行
なんかにも使えそう。
分析はBigQueryを使えるならそのほうがいいかも?
こんなのつくってます!!
積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!
積読ハウマッチは、Nuxt.js+Firebaseで開発してます!
もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ
要望・感想・アドバイスなどあれば、
公式アカウント(@MemoryLoverz)や開発者(@kira_puka)まで
参考にしたサイト
- データのエクスポートとインポート | Firebase
- Cloud Firestoreのバックアップ・リストア - google-cloud-jp - Medium
- gcloudのアカウント変更とプロジェクト変更|yo16|note
- 自分用GCPコマンドリファレンス - Qiita
- gcloudの自分用メモ - Qiita
- gcloudコマンド(GCP)で複数のプロジェクトとアカウントの使い分けを便利に - Adwaysエンジニアブログ
- macosにgcloudとkubectlのインストール - Qiita
- macOS 用のクイックスタート | Cloud SDK のドキュメント | Google Cloud