Cloud Functions でエラーが出てバッチ処理がうまくいかない😥と相談を受けたので、関数のログを見てみると、、、ふむふむ。

Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information. at GoogleAuth.getApplicationDefaultAsync (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:160:19) at <anonymous> at process._tickDomainCallback (internal/process/next_tick.js:229:7)
翻訳してみると、認証情報が読み込めないとのこと。

さっそくググってみると以下の情報が役に立ちそうなことがわかりました。
Firebase – 環境の構成
https://firebase.google.com/docs/functions/config-env?hl=ja
Cloud IAM – サービス アカウント キーの作成と管理
https://cloud.google.com/iam/docs/creating-managing-service-account-keys
要は、サービスアカウントのキーを作成し、これをFunctionsで初期化のさいに読み込ませれば良いということか。

さっそく手順通りにサービスアカウントのキーを作成します。
ボタンからCloud IAMに移動し、サービスアカウントタブを開き、

Firebase Admin SDK のキー(鍵)を作成します。

今回は「JSON」を選択。

作成されたキーは自動的にダウンロードされます。

このファイルを、Functionsの作業ディレクトリにコピー。
/functions - foo-project-01234-0123456789abc.json - index.js ...そのほかのファイル
今度は「Firebase – 環境の構成」を参考に index.js を編集します。
/functions - foo-project-01234-0123456789abc.json - index.js ...そのほかのファイル
上記を参考に、書き換えます。

この際、キーファイル名は管理しやすいファイル名にリネームしておきます。
今回は例に倣って foo-project-01234-0123456789abc.json を serviceAccount.json にリネームしました。
const serviceAccount = require('./serviceAccount.json') const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG) adminConfig.credential = admin.credential.cert(serviceAccount) admin.initializeApp(adminConfig)
これで解決するはず。
デプロイしてみます。
$ firebase deploy --only functions
実際に関数を動かしてみます。

無事エラーも消えたようですね!🙌
最後にキーファイルをうっかりコミットしないよう、.gitignore に追記しておきます。
serviceAccount.json
これで問題解決しました。
お疲れ様でした。