Firebaseの拡張機能(特にResize Imagesなど)を導入する際、デプロイエラーに直面することがあります。本記事では、Google Cloudのデフォルトサービスアカウントが原因で発生する「400/412エラー」の特定方法と、具体的な復旧手順を解説します。この記事を読むことで、IAM権限の不備によるデプロイ失敗を迅速に解消できるようになります。
1. 発生している課題
Firebase Extensionsをインストールしようとすると、以下のようなエラーメッセージが表示され、デプロイが中断されるケースがあります。
RESOURCE_ERROR: Gen1 operation for function ... failed: Build failed:
Default service account '[プロジェクト番号]-compute@developer.gserviceaccount.com' doesn't exist.
このエラーは、Firebase(内部的には第1世代Cloud Functions)がデプロイ時に必要とする「デフォルトの計算サービスアカウント」が、プロジェクト内で削除されているか、適切に認識されていないために発生します。
2. 原因の特定
Google Cloudの「IAMと管理」画面を確認すると、以下の状況が判明することが多いです。
- サービスアカウント一覧には存在するが、**IAMの権限リスト(プリンシパル)**から削除されている。
- 誤ってアカウント自体を削除してしまった。
- APIの無効化などにより、アカウントが一時的にリンク切れを起こしている。
3. 解決策:サービスアカウントの再登録
以下の手順で、欠落しているサービスアカウントをIAMに手動で再登録します。
ステップ1:サービスアカウントのメールアドレスをコピー
Google Cloudコンソールの「サービスアカウント」メニューへ移動し、以下の形式のアドレスを探してコピーします。
[プロジェクト番号]-compute@developer.gserviceaccount.com
ステップ2:IAM権限の付与
- 「IAM」メニューに戻り、画面上部の「アクセスを付与」をクリックします。
- 「新しいプリンシパル」に、先ほどコピーしたメールアドレスを貼り付けます。
- 「ロールを選択」で 「編集者 (Editor)」 を選択します。これはデフォルトサービスアカウントに標準的に割り当てられる権限です。
- 「保存」をクリックします。
ステップ3:Firebaseコンソールで再試行
IAMリストにアカウントが表示されたことを確認したら、Firebaseコンソールのエラー画面に戻り、「再試行 (Retry)」をクリックします。もし解決しない場合は、一度「アンインストール」してから再度インストールを試みてください。
4. 運用上の注意点と学び
今回のケースから学べる、インフラ管理の要点は以下の通りです。
| 項目 | 注意点 |
|---|---|
| デフォルトアカウントの保護 | [プロジェクト番号]-compute@... はシステムの基盤となるため、原則削除しない。 |
| APIの依存関係 | Cloud Functions APIを無効にすると、関連するサービスアカウントも影響を受ける可能性がある。 |
| IAMの整合性 | サービスアカウントが「存在」していても、IAMに「登録」されていないと権限エラーになる。 |
Firebase Extensionsは便利なツールですが、その裏側ではGoogle Cloudの標準的なリソースが動いています。エラーが発生した際は、まず「どのサービスアカウントが、どの権限を求めているか」をログから読み解くことが解決への近道です。

