Loading
BLOG 開発者ブログ

2018年8月16日

【速報】Firebase Cloud Firestoreがexport / importに対応しました

こんにちは。

クラウドソリューショングループのwatanabe.tです。

Google Cloud Next ’18でアップデートが予告されていた、Cloud Firestoreの複数のアップデートがついに行われました。

公式リリース

今回はその中でも多くの人の待望であった、Cloud Firestoreのexport / import機能のサポートについてお話します。


事前準備

Cloud Firestoreでexport/importをサポートする上でいくつか準備して置かなければいけないことがあります。

Blazeプランへのアップデート

Cloud Firestoreのexport/importはBlazeプランでのみ有効です。

Spark、Flameプランを使用している人は、プロジェクトのプランをBlazeに変更する必要があります。

export先のCloud StorageのBucketを作成する

データはCloud Storageにエクスポートされるため、GCPのコンソールからCloud StorageにBucketを作成しておきましょう。

このとき、Cloud Firestoreのリージョンと同一のリージョンに作成するのが推奨されているので、Multi-Regional : 米国で作成しておきます。

gcloudコマンドのセットアップ

Cloud Firestoreのデータのエクスポートにはgcloudコマンドを利用するため、gcloudコマンドのセットアップを行います。

まずは、Firebaseのプロジェクトと紐付けるため、GCPのコンソールにアクセスして、Cloud Shellから以下のコマンドを実行します。

PROJECT_ID はFirebaseコンソールの プロジェクトの設定 、またはGCPコンソールの左上から プロジェクトの選択 で確認することができます。

gcloud config set project [PROJECT_ID]


次に、gcloudコマンドの最新のalpha版にしかfirestoreオプションが実装されていないため、以下のコマンドを実行してgcloudコマンドをアップデートします。

sudo gcloud components update



データのExport

準備は整ったので、いよいよエクスポート作業に入ります。


ただし、このエクスポートはエクスポート開始時の完全なスナップショットではないことに注意が必要です。

操作の実行中にデータに変更が加えられると、その変更も反映される場合があるようです。


では、以下のコマンドを実行してデータをエクスポートしてみましょう。

ちなみに、データを非同期でエクスポートしたい場合は --async をつければOKです。

gcloud alpha firestore export gs://[BUCKET_NAME]


また、特定のコレクションのみエクスポートしたい場合は --collection-ids を使いましょう。

gcloud alpha firestore export gs://[BUCKET_NAME] --collection-ids='[COLLECTION_ID_1]','[COLLECTION_ID_2]'


これでエクスポートしたデータがCloud Storageにファイルとして作成されます。

ただし、ファイルはjsonなどの形式でエクスポートされるわけでは無いようで、あくまでバックアップを目的としたもののようです。



データのImport

次にexportしたデータをimportしてみましょう。

このときの注意点としては、エクスポートしたデータにはインデックス情報が含まれていないため、カスタムインデックスを使用するには再度インデックスを張り直す必要があることです。


では、エクスポートしたデータのバケットとプレフィックスを指定して以下のコマンドを実行します。

gcloud alpha firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/


他のプロジェクトのインポートにも対応しているとのことで、バックアップだけでなくレプリカのような使い方もできるかもしれませんね。


まとめ

ようやく待望のデータバックアップを行えるようになりました。

これで間違ってコレクションを消してしまって真っ青、なんてことからおさらばすることができますね。


ただし、注意しなくてはならないのは料金です。

この機能自体には料金は発生しませんが、エクスポートするための読み取りオペレーションやインポートするための書き込みオペレーション、Cloud Storageの使用料はかかります。

気づいたらすごい料金が発生していた、なんてことにならないよう十分注意しましょう。



watanabe.tのブログ

クラウドソリューショングループ所属

昔はモバイルアプリ開発を、今はGCP, AWS, Firebaseなどのクラウド周りの提案/開発を行っているエンジニアです。

AWS認定ソリューションアーキテクト取得しました!