👋

Firebase Functions(Cloud Functions)はApp Engine Default Accountを使用している

2022/05/24に公開約800字

めちゃくちゃハマったので備忘録に。

Firebaseを有効にした際、GoogleがFirebase Service Agentやadmin sdkのデフォルトのサービスアカウントを用意してくれるがfirebase functionsの実行マシンが使用しているサービスアカウントはfirebase-service-accountから始まるものやfirebase-adminsdk-xxxxxのようなアカウントではない

App Engine default service accountである。俄には信じられなかったがどうやらそのようになっている。ドキュメントではどこに書いてあるのか見つけられなかったが、cloud function for firebaseでなぜか通常のストレージへのアップロードやアクセスはできるのに関わらずsigned urlの発行ができなかったため、admin-sdkのサービスアカウントにサービスアカウントトークン発行者の権限をつけてみた。だが一向に上手くいかず時間だけを消耗していた所、Stack Overflowにてcloud functionでこれを実現した人がApp Engine default service accountに対して権限付与をおこなっているのを見つけた。

もしやと思って、App Engine Default Service Acountに権限を与えてみたらちゃんと動きました。
まぁCloud Functionが前身だからアカウントの仕様は同じだよなと思いつつも、こんな落とし穴に2時間くらいハマって骨を折ったので、同じような問題で誰かがハマらないように記事に残しておきます。

Discussion

ログインするとコメントできます