Export
コマンド
$ firebase auth:export 出力するファイル名とパス --format=フォーマット(CSVかJSON) --project=firebaseプロジェクトID
# 具体例
$ firebase auth:export prod_authentication.json --project=sample-project-prod
Exporting accounts to prod_authentication.json
✔ Exported 1000 account(s) successfully.
...
解説
- 基本的にはFirebase公式ページ記載の通りだが、--projectを付けて明示的にプロジェクトを指定しないと
Error: An unexpected error has occurred.
というエラーが発生し、実行することができない- 同じ事象に遭遇しているStackoverflow記事を参考
- フォーマットはCSVとJSONを選択できる。構造的にはJSONの方が美しく見やすいのでお勧め。
- ファイル名にフォーマットの拡張子(.csv, .json)を付けると--formatを付けていようが拡張子のフォーマットが優先される
- ファイル名にパスを指定しない場合、Firebaseプロジェクトのルートにファイルが出力される
- 1000件を超える場合、1000件出力が成功するごとにコンソール上にログが出力される
- 処理自体は2万件ほどであれば1分かからない程度で終了する
Import
コマンド
$ firebase auth:import ACCOUNT_FILE \
--hash-algo=HASH_ALGORITHM \
--hash-key=KEY \
--salt-separator=SALT_SEPARATOR \
--rounds=ROUNDS \
--mem-cost=MEM_COST \
--project=project \
# 具体例
$ firebase auth:import prod_authentication.json \
--hash-algo=SCRYPT \
--hash-key=key \
--salt-separator=XXX \
--rounds=100 \
--mem-cost=100 \
--project=sample-project-dev
Processing prod_authentication.json (XXX bytes)
Starting importing 1000 account(s).
✔ Imported successfully.
...
解説
- Exportと同様に基本は公式ページ記載の通りだが、単純にImportしたいだけの場合、上記のパラメータが最小限の設定となる
- それぞれのパラメータはImportしたいFirebaseプロジェクトの「パスワードハッシュパラメータ(hash_config)」に記載の値を設定する。パスワードハッシュパラメータはAuthentication->Usersのテーブルヘッダーの三点リーダーから表示することができる。
- 上記コマンドのパラメータとhash_configのマッピングは以下の通り
パラメータ | hash_configのフィールド |
---|---|
hash-algo | algorithm |
hash-key | base64_signer_key |
salt-separator | base64_salt_separator |
rounds | rounds |
mem_cost | mem_cost |
- Exportと同様に、1000件を超える場合、1000件出力が成功するごとにコンソール上にログが出力される
まとめ
- 公式ページに足りていない情報を補足しつつ、Export/Importコマンドを具体的に解説しました
- 多くのFirebaseプロジェクトで、本番環境のデータをDevやStagingに移したいというユースケースがあると思う。本記事を元に、小さな調べごとをせずにデータ移行して頂ければ幸いです。