🔴

firebase deployでcloud buildが失敗

2025/01/18に公開

現象

新規で作った組織のプロジェクトで firebase deploy を実行したところ、以下のエラーを吐いて失敗してしまいました。

...
Build failed: failed to Fetch: failed to download archive gs://gcf-sources-PROJECT_NUMBER-asia-northeast1/createUserOnUserCreate-xxxx/version-1/function-source.zip: Access to bucket gcf-sources-PROJECT_NUMBER-asia-northeast1 denied. You must grant Storage Object Viewer permission to PROJECT_NUMBER-compute@developer.gserviceaccount.com.
...

原因

2024 年 5 月 3 日以降に作成された組織は自動的なロール付与が無効になっているためでした。

https://cloud.google.com/resource-manager/docs/organization-policy/restricting-service-accounts?hl=ja から引用

解決策

サービスアカウント1に権限を付与

  • サービスアカウント1: [PROJECT_NUMBER]-compute@developer.gserviceaccount.com
    • 用途: Firebase Functions のビルド
    • 必要な権限: roles/cloudbuild.builds.builder

サービスアカウント2に権限を付与

  • サービスアカウント2: [PROJECT_NAME]@appspot.gserviceaccount.com
    • 用途: Firebase Functions の実行と Firebase 管理
    • 必要な権限:
      • roles/firebase.admin
      • roles/iam.serviceAccountUser

あとは、firebase deployで成功しました。

終わりに

自動的なロール付与が無効になった影響で、新しい組織のプロジェクトをfirebaseで立ち上げると、前プロジェクトでは起きなかったエラーがちらほら起きています。cloud build以外にも、以下の記事では、firebaseコンソールから秘密鍵が作れなくなっている問題を対処しましたが、他にも遭遇する可能性があるので、もしまた他の権限エラーなど見つかれば記事としてあげていこうと思います。

https://zenn.dev/dragonarrow/articles/1cc2f5a81a5bb9

Discussion