gcloudコマンドでは、複数のアカウントや複数の設定を管理することができますが、 application_default_credentials.json は、 gcloud auth application-default login する度に上書きされてしまいます。
そこで、この記事では、1つのマシンで複数の application_default_credentials.json を使い分ける方法を紹介します。
そもそも、application_default_credentials.json は~/.config/gcloud/application_default_credentials.json として保存されているはずです。
別のパスを指定できれば、上書きを防ぐことができます。
CLOUDSDK_CONFIG という環境変数で、gcloudコマンドを使用するときの設定ファイルがあるディレクトリを変更することができます。
CLOUDSDK_CONFIG=$HOME/.config/gcloud-hoge gcloud auth application-default login を実行して認証すると、 ~/.config/gcloud-hoge/application_default_credentials.json に認証情報が保存されます。
アプリケーションの環境変数で GOOGLE_APPLICATION_CREDENTIALS に該当パスを指定すると、指定した認証情報を使用するようにできます。
毎回環境変数を設定するのは面倒なので、プロジェクトごとに.envrc ファイルを作成し、 direnv で自動的にパスが切り替わるようにしておく運用にしています。
export CLOUDSDK_CONFIG=$HOME/.config/gcloud-hoge
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.config/gcloud-hoge/application_default_credentials.json