{GCP Cloud Firestore}Datastore モードの Firestore でデータを保存し、クエリを実行する

 

https://cloud.google.com/datastore/docs/store-query-data?hl=ja

https://qiita.com/kento_gm/items/0ae03a6fee989a53ed2f

https://cloud.google.com/datastore/docs/samples/datastore-basic-entity?hl=ja

https://cloud.google.com/datastore/docs/datastore-api-tutorial?hl=ja

https://cloud.google.com/docs/authentication/provide-credentials-adc?hl=ja

 


[1]Cloud Firestore (ネイティブ モードの Firestore)
モバイルアプリとウェブアプリに推奨します。

[2]Cloud Datastore (Datastore モードの Firestore)
バックエンド サーバーを使用するアプリ アーキテクチャに推奨します。


プロジェクト毎にどちらか一方しか使用できない

いずれも単独で削除はできない模様。
削除するためにはプロジェクトを削除する必要がある


今回は[2]を使用する

 


-- 1. 前作業

gcloud init
gcloud auth list

gcloud --version

gcloud projects create project01-9999999 \
--name="project01"

gcloud projects list


gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet

gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111

gcloud services enable compute.googleapis.com --project project01-9999999

gcloud components update

-- 2. データベース作成

gcloud app create


gcloud datastore databases create --region=asia-northeast1

Google App Engineを事前に作成しないと下記エラーとなる
ERROR: gcloud crashed (AppEngineAppDoesNotExist): You must first create a Google App Engine app by running:

 

 

-- 3. データを保存する

gcloud auth application-default login


pip3 install --upgrade google-cloud-datastore

python3

from google.cloud import datastore

client = datastore.Client()

task = datastore.Entity(client.key("Task"))
task.update(
    {
        "category": "Personal",
        "done": False,
        "priority": 4,
        "description": "Learn Cloud Datastore",
    }
)

client.put(task)


-- 4. クエリの実行

query = client.query(kind="__kind__")
query.keys_only()

kinds = [entity.key.id_or_name for entity in query.fetch()]

kinds

 

-- 5. クリーンアップ


gcloud projects list

gcloud projects delete project01-9999999