Google Cloud CLI には、ローカル開発用サーバー(dev_appserver.py
)が含まれています。ローカル開発用サーバーを使用することで、本番環境の App Engine でアプリケーションの実行をシミュレートしながら、それを App Engine のバンドル サービスへのアクセスに使用できます。
シミュレートされた環境では、システム関数や Python 3 モジュールによるインポート機能の制限など、サンドボックスにある程度制限がありますが、リクエストのタイムアウトや割り当てには制限がありません。
App Engine 用 SDK のライブラリによって提供される Datastore、Memcache、タスクキューなどのサービスを、ローカル開発用サーバーでローカルに実行してシミュレートすることもできます。アプリケーションが開発用サーバーで動作している場合でも、Google API の HTTP エンドポイントを使用して、本番環境のインフラストラクチャに対するリモート API 呼び出しを実行できます。
ローカル開発サーバーの実行
アプリの app.yaml
構成ファイルを作成した後、dev_appserver.py
コマンドを使用してローカル開発用サーバーを起動し、アプリをローカルで実行できます。
ローカル開発用サーバーを起動するには:
ローカル開発用サーバーの実行(dev_appserver.py
)
ローカル開発用サーバーは [PATH_TO_CLOUD_SDK]/google-cloud-sdk/bin/dev_appserver.py
にあります。このツールを実行するには、dev_appserver.py
の実行時にフルパスを指定するか、dev_appserver.py
を PATH
環境変数に追加します。
Google Cloud CLI ツールを PATH
に追加してコマンドの補完を有効にするには、次のコマンドを実行します。
[PATH_TO_CLOUD_SDK]/google-cloud-sdk/install.sh
app.yaml
構成ファイルのあるディレクトリでdev_appserver.py
コマンドを実行します。Python 2 がシステムのデフォルトのインタープリタでない場合は、python2 dev_appserver.py
を実行して Python 2 インタープリタが使用されていることを確認する必要があります。アプリへのディレクトリ パスを指定します。たとえば次のようにします。
dev_appserver.py --runtime_python_path=/usr/bin/python3 [PATH_TO_YOUR_APP]
次のように、引数をカンマ区切りの Key-Value リストに設定してもかまいません。
dev_appserver.py --runtime_python_path="python27=/usr/bin/python2.7,python3=/usr/bin/python3" [PATH_TO_YOUR_APP]
また、特定のサービスの構成ファイルを指定することもできます。たとえば次のようにします。
dev_appserver.py --runtime_python_path=/usr/bin/python3 app.yaml
ポートを変更する場合は、
--port
オプションを含めます。dev_appserver.py --runtime_python_path=/usr/bin/python3 --port=9999 [PATH_TO_YOUR_APP]
dev_appserver.py
コマンド オプションについて詳しくは、ローカル開発用サーバーのオプションをご覧ください。ローカル開発用サーバーが起動し、リクエストを待機します。ウェブブラウザで http://localhost:8080/ にアクセスすると、アプリの動作を確認できます。
--port
オプションでカスタムポートを指定した場合は、そのポートでブラウザを開くようにしてください。
ローカル サーバーをコマンドラインから停止するには、次のキーを押します。
- macOS または Linux: Control+C
- Windows: Control+Break
アプリケーション ID の指定
メールアドレスのなりすましなどのために、ローカル サーバーでアプリ ID にアクセスする必要がある場合は、get_application_id()
関数を使用します。実行中のアプリのホスト名を取得するには、get_default_version_hostname()
関数を使用します。
アプリケーションのランタイム環境の検出
コードが本番環境またはローカルの開発用サーバーのどちらで実行されているかを確認するには、GAE_ENV
環境変数の値を調べます。
if os.getenv('GAE_ENV', '').startswith('standard'):
# Production in the standard environment
else:
# Local development server
ユーザー サービスの使用
App Engine には、アプリケーションの認証と承認を簡素化するための Users サービスが用意されています。ローカル開発用サーバーは、独自のログインページとログアウト ページで Google アカウントの動作をシミュレートします。ローカル開発用サーバーでの実行中、関数はローカル サーバー上の /_ah/login
と /_ah/logout
の URL を返します。
メールの使用
ローカル開発用サーバーは、SMTP サーバーまたはローカルにインストールされた Sendmail を使用して、呼び出しのメールを App Engine のメールサービスに送信できます。
SMTP の使用
SMTP サーバーを使用してメールサポートを有効にするには、次のように dev_appserver.py
を呼び出します。
dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
--smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]
ここで、--smtp_host
、--smtp_port
、--smtp_user
、--smtp_password
の各オプションに実際の値を設定します。
Sendmail の使用
Sendmail でメールサポートを有効にするには、次のように dev_appserver.py
を呼び出します。
dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]
ローカル サーバーは sendmail
コマンドを使用し、インストールのデフォルト構成に従ってメールのメッセージを送信します。
URL 取得の使用
アプリケーションが URL 取得 API を使用して HTTP リクエストを送信する場合、ローカル開発用サーバーはデベロッパーのコンピュータからリクエストを直接送信します。プロキシ サーバーを使用してウェブサイトにアクセスしている場合、ローカル サーバーでの URL 取得の動作は本番環境の App Engine と異なることがあります。