Cloud Datastore エミュレータへの移行

は、

Cloud Datastore エミュレータは、Datastore 本番環境のローカル エミュレーションを可能にします。Cloud Datastore エミュレータは、dev_appserver 用のデフォルトの Datastore 実装として段階的に導入されています。

Datastore エミュレータに移行するメリット

Datastore エミュレータは、App Engine スタンダード環境のクライアント ライブラリ(DB や NDB など)と Cloud Datastore のクライアント ライブラリの間で共有できます。

Datastore エミュレータを使用すると、App Engine スタンダード環境で動作するサービスと App Engine フレキシブル環境で動作するサービスの間でローカルデータを共有できます。

準備

  1. Java ランタイム(JRE)バージョン 8 以降をダウンロードしてインストールします。

  2. dev_appserver を google-cloud-sdk/bin ディレクトリから実行します。

エミュレーション環境の選択

Cloud Datastore エミュレータは、一部の dev_appserver ユーザーのためのデフォルト エミュレータです。Cloud Datastore エミュレータを使用している場合は、dev_appserver に次のメッセージが表示されます。

... Using Cloud Datastore Emulator.

dev_appserver の起動時に '--support_datastore_emulator' フラグを true に設定すると、dev_appserver で Cloud Datastore エミュレータを強制的に使用できます。

dev_appserver.py --support_datastore_emulator=[true|false] app.yaml

dev_appserver での Datastore エミュレータの使用

dev_appserver は、環境変数 DATASTORE_EMULATOR_HOST に基づいてエミュレータを起動するかどうかを決定します。

  • この環境変数が存在する場合、dev_appserver は DATASTORE_EMULATOR_HOST で実行されている既存のエミュレータ プロセスと通信します。

  • この環境変数が存在しない場合、dev_appserver は新しいエミュレータ プロセスを起動します。Datastore エミュレータのポートを指定するには、dev_appserver の起動時に --datastore_emulator_port を設定します。

動作の変更点

ローカルデータ形式の変換

現在、ローカルの Datastore エミュレータは sqlite3 にデータを保存しますが、Cloud Datastore エミュレータはデータを Java オブジェクトとして保存します。

dev_appserver が従来の sqlite3 データを使って起動された場合、そのデータは Java オブジェクトに変換されます。元のデータは、{元のデータファイル名}.sqlitestub というファイル名でバックアップされます。

ローカル データファイルの場所

ローカル データファイルは --datastore_path フラグで指定できます。

  • dev_appserver がエミュレータを起動する場合、この場所は変更されません。

  • dev_appserver が既存の Cloud Datastore エミュレータを使用する場合、このフラグは無視され、エミュレータの設定が優先されます。

ローカルの index.yaml

  • 空の index.yaml は無効と見なされます。index.yaml の構文は YAML 形式です。index.yaml ファイルには、indexes という名前のリスト要素が 1 つだけあります。

  • dev_appserver がエミュレータを起動する場合、index.yaml はアプリケーション プロジェクト ディレクトリにそのまま保存されます。

  • dev_appserver が既存の Cloud Datastore エミュレータを使用する場合、index.yaml はそのエミュレータによって管理されます。

ローカル Datastore サーバーのその他の機能は変更されません。

トラブルシューティング

エミュレータ出力の取得

デフォルトでは、dev_appserver は Datastore エミュレータをサイレント モードで実行します。Datastore エミュレータの出力を表示するには、--dev_appserver_log_level=debug を指定して dev_appserver を実行します。

インポートの競合

dev_appserver は grpc を使用して Cloud Datastore エミュレータと通信するため、インポートの競合が発生する可能性があります。エラーが発生した場合は、virtualenv の内部で dev_appserver を実行してください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python の App Engine スタンダード環境