Fix: 'The Cloud Firestore API is not available for Datastore Mode projects.'

背景

Firebase console から Firestore をセットアップし、ローカル環境のスクリプトから Firestore にアクセスしようとしたときに、"The Cloud Firestore API is not available for Datastore Mode projects." というエラーログが出力され、アクセスに失敗した。

原因

こちらの記事を見て、原因がわかりました。

Firestore には "Native mode" と "Datastore mode" が存在する。

 

Python の場合、Firestore に関するライブラリが2種類存在しました。

私がこのときに利用していたのは、前者の "google-cloud-firestore" でした。このライブラリを使用する場合は、Firestore が "Native mode" で動作している必要があるようです。"Datastore mode" の場合は、後者のライブラリになります。

 

解決

Firestore が "Datastore mode" で動作していたため、"Native mode" に切り替えます。

f:id:komiyak:20210322220127p:plain

Google Cloud のコンソールから、対象のプロジェクトを選択して、"Datastore" => "Switch to native mode" をクリックしてください。

 

蛇足ですが、私の場合

Firebase は Google Cloud とプロジェクトを共有していますが、それぞれのコンソールから操作が可能なので、それが混乱を招くことがあります。私の場合は、Firestore を Firebase コンソールからセットアップしていたのですが、それについてのサービスアカウントを作成しようとして、Google Cloud から操作したので、対象のプロジェクトをうっかり間違えてしまうというミスをしました。

 

Firebase コンソールからでも、サービスアカウントの作成に移動できますので、そちらを使ったほうがミスがないかもしれません。

  • "Firebase Console" => "Project settings" => "Service accounts" => "Other service accounts" の "N service accounts from Google Cloud" をクリック

f:id:komiyak:20210322221525p:plain

"N service accounts from Google Cloud" からサービスアカウント管理画面へ直接遷移する