Firebase Functions v2 がデプロイできない?よくある原因と完全解決ガイド
Firebase Functions v2 がデプロイできない?よくある原因と完全解決ガイド
Firebase で Cloud Functions v2 を使ってデプロイしようとしたところ、次々とエラーが出て詰まりました。この記事では、私が実際にぶつかったすべてのエラーと、その対処法をステップごとに紹介します。
🌩 発生したエラー一覧と概要
1. Build failed with status: FAILURE
- 原因:Cloud Build 用サービスアカウントに権限が不足。
- 解決法:IAM でサービスアカウントにロールを追加。
2. Access to bucket … denied
- 原因:関数ソースを格納している GCS バケットにアクセスできない。
- 解決法:Storage Object Viewer 権限を Compute Engine のサービスアカウントに付与。
3. Permission “artifactregistry.repositories.downloadArtifacts" denied
- 原因:Artifact Registry の読み取り権限が不足。
- 解決法:Artifact Registry 読み取り権限を付与。
4. Permission “artifactregistry.repositories.uploadArtifacts" denied
- 原因:キャッシュなどの書き込みができない。
- 解決法:Artifact Registry 書き込み権限を付与。
5. Unable to set the invoker for the IAM policy
- 原因:関数を公開(全員に実行許可)する際の IAM 権限不足。
- 解決法:firebase.json に invoker: “public" を明示。
🧱 IAM 権限で必要な設定
対象:
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- ※ PROJECT_NUMBER は例として
6780...
のような数値です。
付与したロール:
- Cloud Functions 開発者(roles/cloudfunctions.developer)
- Cloud Run 管理者(roles/run.admin)
- サービス アカウント ユーザー(roles/iam.serviceAccountUser)
- Artifact Registry 読み取り(roles/artifactregistry.reader)
- Artifact Registry 書き込み(roles/artifactregistry.writer)
- ストレージ オブジェクト閲覧者(roles/storage.objectViewer)
🛠 firebase.json に追加した設定
関数を明示的にパブリックにするには、次のように invoker を指定するのがベスト:
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "functions": { "source": "functions", "endpoints": { "ping": { "invoker": "public" } } } } |
✅ まとめ:Cloud Functions v2 デプロイ時のポイント
チェック項目 | 解説 |
---|---|
ビルド失敗 | Cloud Build / GCS / Artifact Registry の IAM をまず疑う |
バケットアクセス拒否 | Storage Object Viewer を Compute Engine SA に付ける |
Artifact Registry で失敗 | reader と writer の両方必要 |
関数が公開できない | invoker: “public" を firebase.json に明示 |
ロールが足りない | functions.admin と iam.serviceAccountUser が大体必要 |
🗒 最後に
Cloud Functions v2 は高機能ですが、v1と違って Cloud Run + Artifact Registry + Cloud Build といった複数サービスが絡むため、IAM 権限がとても重要です。
「なんでこんなことで止まるの?」というポイントで引っかかっている方の参考になれば幸いです。
ディスカッション
コメント一覧
まだ、コメントがありません