リージョン ID
REGION_ID
は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r
は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。
詳しくは、リージョン ID をご覧ください。
認証済みユーザー情報を使用して、ユーザー固有のデータを保存および取得し、カスタマイズされたウェブサービスを提供します。
前のステップでは、すべてのユーザーからの直近 10 回のリクエストが表示されるように、ウェブサービスを更新しました。このステップでは、認証済みのユーザー情報を使用してウェブサービスを更新し、現在認証されているユーザーによる直近 10 回のリクエストだけがページに一覧表示されるようにします。
始める前に
このガイドでこれまでのステップをすべて完了している場合は、このセクションをスキップできます。それ以外の場合は、次のいずれかを実行してください。
Python 3 アプリのビルドから始めて、ここまでのステップをすべて完了します。
Google Cloud プロジェクトがすでにある場合は、次のようにウェブサービスのコピーをダウンロードして Firebase を追加すれば、これ以降の処理を続行できます。
Git を使用してサンプル アプリケーション リポジトリをダウンロードします。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
または、zip 形式のサンプルをダウンロードして展開します。
前のステップで用意したファイルのコピーがあるディレクトリに移動します。
cd python-docs-samples/appengine/standard_python3/building-an-app/building-an-app-3
ユーザー固有のデータの保存と取得
Datastore モードの Firestore(Datastore)の祖先を使用して、データと特定のユーザーの関連付けを示すことができます。それにより、Datastore のデータを階層で整理することが可能になります。
その方法は次のとおりです。
store_time
メソッドとfetch_time
メソッドを更新し、Datastore の祖先を使用してvisit
エンティティを保存、取得できるようにします。各
visit
エンティティに祖先が関連付けられました。これらの祖先は、個々の認証済みユーザーを表す Datastore のエンティティです。各祖先のキーには、User
kind と、認証済みユーザーのメールアドレスであるカスタム ID が含まれています。祖先キーを使用して、特定のユーザーに関連付けられている時間に対してのみデータベースへのクエリを行います。root
メソッド内のstore_times
メソッド呼び出しを更新して、id_token
条件内に移動し、サーバーがユーザーを認証した場合のみ実行されるようにします。
インデックスを構成する
Datastore はインデックスに基づいてクエリを作成します。単純なエンティティでは、Datastore がそれらのインデックスを自動的に生成します。ただし、祖先があるエンティティなど、より複雑なエンティティについては、インデックスを自動的に生成することはできません。そのため、visit
エンティティについてはインデックスを手動で作成し、Datastore が visit
エンティティを含むクエリを実行できるようにする必要があります。
visit
エンティティのインデックスを作成するには、次の手順を実行します。
プロジェクトのルート ディレクトリに
index.yaml
ファイル(building-an-app
など)を作成し、次のインデックスを追加します。次のコマンドを実行し、以下のプロンプトに従って
index.yaml
インデックスを Datastore にデプロイします。gcloud datastore indexes create index.yaml
Datastore でインデックスを作成するには、少し時間がかかる場合があります。App Engine にウェブサービスをデプロイする前にインデックスを作成することで、そのインデックスを使用してローカルでテストを行い、構築中のインデックスを必要とするクエリで発生する例外を防止できます。
Datastore インデックスの作成について詳しくは、データストア インデックスの構成をご覧ください。
ウェブサービスのテスト
ウェブサービスを仮想環境でローカルに実行してテストします。
プロジェクトのメイン ディレクトリで次のコマンドを実行して、ウェブサービスを実行します。ローカルテスト用に仮想環境を設定していない場合は、ウェブサービスのテストをご覧ください。
python main.py
ウェブサービスを表示するには、ウェブブラウザに次のアドレスを入力します。
http://localhost:8080
ウェブサービスをデプロイする
Datastore をローカルで使用できるようになったので、次にウェブサービスを App Engine にデプロイする方法を学習します。
プロジェクトのルート ディレクトリから次のコマンドを実行します。ここで、app.yaml
ファイルは次の場所にあります。
gcloud app deploy
すべてのトラフィックは、デプロイした新しいバージョンに自動的にルーティングされます。
バージョン管理の詳細については、サービスとバージョンの管理をご覧ください。
サービスを表示する
ブラウザを速やかに起動して https://PROJECT_ID.REGION_ID.r.appspot.com
でウェブサービスにアクセスするには、次のコマンドを実行します。
gcloud app browse
次のステップ
これで完了です。Datastore のデータ ストレージと Firebase authentication を使用して認証済みユーザーにパーソナルなウェブページを提供する、ウェブサービスを構築しました。
プロジェクトのシャットダウン、停止、課金の無効化により、クリーンアップを行えます。