🐶

Cloud runにおけるFirestore利用について

2021/05/19に公開

概要

公式ドキュメントを読んでも明示的に示したものがなかったので、スニペット的に記述します。

本記事では、具体的なコードについてほとんど示しません。ここで示すことは、サービスアカウントとその権限周りについてです。
Cloud run単体ではFirestoreを利用できません。この時、自分が始めに調べた時はFirebaseからapi keyを発行するというやり方でしたが、これは処理が遅くなります。一応公式でも記載がありますが、それに少しだけ情報を付加したものです。

ここでは、Cloud runにサービスアカウントを付与し、そのサービスアカウントにFirestoreへのアクセスを許可するというものです。以下の項目に分けて記します。

  • サービスアカウントの生成・権限付与
  • Cloud runサービスにサービスアカウントを紐づけ

サービスアカウントの生成・権限付与

画像には、設定する際のタブの位置を示しています。「サービスアカウント」タブでは作成、
「IAM」タブでは権限の付与をします。このとき、Firestoreの読み書きで必要な権限は「Cloud Datastore ユーザー」です。

Cloud runサービスにサービスアカウントを紐づけ

次にCloud runでdeployしたサービスに先ほど作成したサービスアカウントを紐づけをします。これはGUI・CUI、どちらでもできます。

GUI

CUI

ここではGCPのクライアントソフトの具体的なインストール方法や設定方法については説明しません。これはnpmから簡単にインストールできるので、もしもできたら以下のコマンドで設定できます。

gcloud run services update SERVICE --service-account SERVICE_ACCOUNT

また、cloud runサービスのdeploy時に設定することもできます。以下がそのコマンドです。

gcloud run deploy --image IMAGE_URL --service-account SERVICE_ACCOUNT

おわりに

以上の設定が出来れば、Cloud runでdeployした環境上でFirestoreにアクセスできるようになります。
自分の場合、Pythonライブラリを使用していますが、とくにapi keyを設定しなくても大丈夫です。

この辺りの日本語のまとまった資料とかってないですよね。今はもうTerraform等を使用するから、こういったのってあまりないんですかね。

参考

Discussion