Cloud Datastore エミュレータの実行

Google Cloud Datastore エミュレータは、Cloud Datastore 本番環境のローカル エミュレーションを可能にします。このエミュレータを使用して、アプリケーションを開発してローカルでテストすることができます。加えて、このエミュレータを使用すると、本番環境用の Cloud Datastore インスタンスのインデックスを生成したり、不要なインデックスを削除したりすることもできます。このページでは、エミュレータのインストール、エミュレータの開始、およびアプリケーションをエミュレータに接続するための環境変数の設定について説明します。

始める前に

Cloud Datastore エミュレータを使用するには、次のものが必要です。

エミュレータのインストール

Cloud Datastore エミュレータは、Google Cloud SDK の gcloud ツールのコンポーネントです。gcloud components install コマンドを使用して、Cloud Datastore エミュレータをインストールします。

gcloud components install cloud-datastore-emulator

エミュレータ データ ディレクトリ

エミュレータは、指定されたデータ ディレクトリに /WEB-INF/appengine-generated/local_db.bin を作成し、local_db.bin にデータを格納することによって、Cloud Datastore をシミュレートします。デフォルトで、エミュレータはデータ ディレクトリ ~/.config/gcloud/emulators/datastore/ を使用します。local_db.bin ファイルは、エミュレータのセッションを通じて継続します。複数のデータ ディレクトリをセットアップし、それぞれを別々のローカル Cloud Datastore インスタンスとして扱うことができます。local_db.bin ファイルの内容をクリアするには、エミュレータを停止して、ファイルを手動で削除します。

エミュレータの開始

エミュレータを開始するには、コマンド プロンプトから datastore start を実行します。

gcloud beta emulators datastore start [flags]

ここで、[flags]gcloud ツールに渡されるオプションのコマンドライン引数です。例:

  • --data-dir=[DATA_DIR] は、エミュレータのデータ ディレクトリを変更します。エミュレータは、[DATA_DIR] の内部に /WEB-INF/appengine-generated/local_db.bin ファイルを作成するか、既存のファイルが使用可能な場合にはそれを使用します。

  • --no-store-on-disk は、エミュレータ セッション用のデータをディスクに残さないようにエミュレータを設定します。

オプション フラグの完全なリストについては、gcloud beta emulators datastore start のリファレンスをご覧ください。

エミュレータを開始すると、次のようなメッセージが表示されます。

...
[datastore] Dev App Server is now running.

エミュレータを停止するには、コマンド プロンプトで Ctrl+C を入力します。

環境変数の設定

エミュレータを開始したら、アプリケーションが Cloud Datastore 本番環境ではなくエミュレータに接続するように環境変数を設定する必要があります。これらの環境変数は、アプリケーションの実行に使用するものと同じマシン上で設定します。

環境変数はエミュレータを開始するたびに設定する必要があります。環境変数は、動的に割り当てられるポート番号に依存しています。この番号は、エミュレータを再起動するたびに変わる可能性があります。

変数の自動設定

アプリケーションとエミュレータが同じマシン上で動作している場合は、次のようにして環境変数を自動的に設定できます。

Linux / macOS

コマンド代入を使用して env-init を実行します。

$(gcloud beta emulators datastore env-init)

Windows

env-init からの出力を使用してバッチファイルを作成および実行します。

gcloud beta emulators datastore env-init > set_vars.cmd && set_vars.cmd

これで、アプリケーションが Cloud Datastore エミュレータに接続します。

変数の手動設定

アプリケーションとエミュレータが別々のマシン上で動作している場合は、次のようにして環境変数を手動で設定します。

  1. env-init コマンドを実行します。

    gcloud beta emulators datastore env-init
  2. アプリケーションを実行するマシンで、env-init コマンドの出力の指示に従って環境変数と値を設定します。例:

    Linux / macOS
    export DATASTORE_EMULATOR_HOST=localhost:8432
    export DATASTORE_PROJECT_ID=my-project-id
    Windows
    set DATASTORE_EMULATOR_HOST=localhost:8432
    set DATASTORE_PROJECT_ID=my-project-id

これで、アプリケーションが Cloud Datastore エミュレータに接続するようになります。

インデックスの更新と削除

エミュレータを使用してアプリケーションを実行すると、本番環境用の Cloud Datastore インスタンスのインデックスを生成でき、不要なインデックスを削除することもできます。詳しくは gcloud ツールの使用をご覧ください。

環境変数の削除

エミュレータの使用が終わったら、アプリケーションが本番環境用の Cloud Datastore インスタンスに接続するように、エミュレータを停止して(Ctrl+C)、環境変数を削除します。

変数の自動削除

アプリケーションとエミュレータが同じマシン上で動作している場合は、次のようにして環境変数を自動的に削除できます。

Linux / macOS

コマンド代入を使用して env-unset を実行します。

$(gcloud beta emulators datastore env-unset)

Windows

env-unset からの出力を使用してバッチファイルを作成、実行します。

gcloud beta emulators datastore env-unset > remove_vars.cmd && remove_vars.cmd

これで、アプリケーションが本番環境用の Cloud Datastore インスタンスに接続するようになります。

変数の手動削除

アプリケーションとエミュレータが別々のマシン上で動作している場合は、次のようにして環境変数を手動で削除します。

  1. env-unset コマンドを実行します。

    gcloud beta emulators datastore env-unset
  2. アプリケーションを実行するマシンで、env-unset コマンドの出力の指示に従って環境変数を削除します。以下はその例です。

    Linux / macOS
    unset DATASTORE_EMULATOR_HOST
    unset DATASTORE_PROJECT_ID
    Windows
    set DATASTORE_EMULATOR_HOST=
    set DATASTORE_PROJECT_ID=

これで、アプリケーションが本番環境用の Cloud Datastore インスタンスに接続するようになります。

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

Cloud Datastore のドキュメント