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

Firestoreのデータをガリガリ見ていきたいなと思っていたら、
別のプロジェクトに移行できそうだったので、いろいろ調べたときの備忘録。

分析目的だけど、BigQueryは1000カラム制約で使えなかったので代替案...
別プロジェクトなら無料枠でいろいろできそう。

注意

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)まで

参考にしたサイト

Originally published at qiita.com

きらぷか@i18n補助ツール『トランスノート』開発者

フリーエンジニア/今はNuxt.js/いつかFlutter 受託&アプリ/Webサービス/ゲームを #個人開発 CS修士→SIer/R&D→フリー #paiza はAランクで満足/AtCoderしたい 仕事依頼やご相談はDMまで Kotlin/Python/Swift/Unity/Java/Haskell/DDD

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント