【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管理者」を与えるとひとまず解決する。
理屈はよくわかんないです。もうちょっと絞れない??とは思うんですが、読み書きする場合、今のところこれが最小っぽい。
もっと詳しいことご存じの方が居たら教えてください。
この記事が気に入ったらサポートをしてみませんか?