【GCP】CloudFunctionsからpython使ってfirestoreをいじくりまわしたい時の権限設定とかの話

……って言って調べると、firebaseのfunctionsからの話ばっかりでてきてしまって、CloudFunctionsからつつきたいんだよーって時にいつも彷徨う羽目になるので、未来の自分に向けてまとめておきます。

結論

・サービスアカウントに「Cloud Firestore編集者 + Firebase管理者」権限を与えろ。

・pip install --upgrade google-cloud-firestore

公式ドキュメントはこれを見る

クイックスタート: サーバー クライアント ライブラリの使用

大体これ見ればほぼ全部導入できる。

ざっくり流れ

0・プロジェクトが無い場合作る
1・「ネイティブモードのCloud Firestore」を用意
2・サービスアカウントを作る
3・サービスアカウントに権限を付与※ややこい
4・サービスアカウントキーを発行してPC内に安全に保存
5・環境変数「GOOGLE_APPLICATION_CREDENTIALS」をPCに設定
(くれでんしゃるず君は、ローカルテストや他のサーバーで動かすときに使う。GCP上では自動で入る。複数のプロジェクト持ってるとぶつかって面倒なので、最初からdotenvとかで管理したい)
6・pip install --upgrade google-cloud-firestore

これで準備完了。後は頑張ってコード書く。

サービスアカウントの権限設定がややこい

ぶっちゃけオーナー権限与えちゃえば良いんですけど、本番だとそうもいかないので権限を絞りたい。
でも、Cloud Firestore編集者を与えても403返ってくる。なんでや!

って時は、「Cloud Firestore編集者 + Firebase管理者」を与えるとひとまず解決する。

理屈はよくわかんないです。もうちょっと絞れない??とは思うんですが、読み書きする場合、今のところこれが最小っぽい。

もっと詳しいことご存じの方が居たら教えてください。


この記事が気に入ったらサポートをしてみませんか?