LoginSignup
3
2

More than 1 year has passed since last update.

FirebaseCLIを使ってFirebase AuthenticationをExport/Importする

Last updated at Posted at 2021-11-14

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.というエラーが発生し、実行することができない
  • フォーマットは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のテーブルヘッダーの三点リーダーから表示することができる。 image.png
  • 上記コマンドのパラメータと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に移したいというユースケースがあると思う。本記事を元に、小さな調べごとをせずにデータ移行して頂ければ幸いです。

参考資料

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2