お気に入り | 日本語 | ログイン

Java アプリケーションのアップロードと管理

App Engine Java SDK には、App Engine とのやりとりに使用するコマンドが含まれています。このコマンドを使用し、アプリケーションの新しいバージョンのコード、設定ファイル、静的ファイルを App Engine にアップロードできます。また、データストア インデックスの管理やログのダウンロードにもこのコマンドを使用できます。

アプリケーションのアップロード

Eclipse および Google Plugin を使用している場合、Eclipse から直接アプリケーションをアップロードできます。アプリケーションをアップロードするには、ツールバーの App Engine の展開(Deploy)ボタンをクリックします。App Engine の展開ボタン詳細については、Google Eclipse Plugin をご覧ください。

コマンド プロンプトからもアプリケーションをアップロードできます。ログのダウンロードなどコマンドのその他の機能を使用するには、コマンド プロンプトからコマンドを実行する必要があります。実行コマンドは、SDK の appengine-java-sdk/bin/ディレクトリに格納されています。

Windows を使用している場合のコマンドは次のとおりです:

appengine-java-sdk\bin\appcfg.cmd [options] <action> <war-location>

Mac OS X または Linux を使用している場合のコマンドは次のとおりです:

./appengine-java-sdk/bin/appcfg.sh [options] <action> <war-location>

コマンドは、実行するアクションの名前と、アプリケーションの WAR ディレクトリの場所を引数とします。

アプリケーションをアップロードするには、update アクションを使用します。コマンドは次のとおりです。

./appengine-java-sdk/bin/appcfg.sh update myapp/war

これらのコマンドは OS 固有のラッパー スクリプトで、Java クラス com.google.appengine.tools.admin.AppCfgappengine-java-sdk/lib/appengine-tools-api.jar で実行されます。

インデックスの更新

update アクションを使用してアプリケーションをアップロードする場合、アプリケーションのインデックス設定ファイル(datastore-indexes.xml および generated/datastore-indexes-auto.xml)も同時に更新されます。まだ App Engine に存在しないインデックス設定が定義されている場合、App Engine はインデックスを新たに作成します。データストアに含まれるデータの新しいインデックスに含まれるべきデータ量に従い、インデックスの作成には時間がかかる場合があります。アプリケーションから実行されたクエリが構築が完了していないインデックスを使用した場合、クエリでは例外が発生します。

例外が発生しないようにするには、インデックスの構築が完了してから、新しいインデックスを必要とするアプリケーションの新バージョンを実稼働させてください。方法の 1 つは、設定内のインデックスを追加または変更した場合、appengine-web.xml でアプリケーションに新しいバージョン番号を与えることです。アプリケーションは新しいバージョンとしてアップロードされ、このバージョンは自動的にはデフォルトのバージョンに設定されません。インデックスの構築が完了後、管理コンソールの [Versions] セクションから、デフォルト バージョンを新しいものに変更できます。

新しいアプリケーションが稼働する前に新しいインデックスの構築が完了していることを確認するもう 1 つの方法は、アプリケーションのアップロードとは別にインデックス設定をアップロードする方法です。アプリケーションのインデックス設定のみをアップロードするには、update_indexes アクションを使用します。

./appengine-java-sdk/bin/appcfg.sh update_indexes myapp/war

管理コンソールの [インデックス] セクションからアプリケーションのインデックスのステータスを確認できます。

スケジュール タスクの管理

App Engine はスケジュール タスク(cron ジョブとも呼ばれます)をサポートしています。スケジュール タスクは cron.xml というファイルで指定し、update_cron コマンドを使用してアップロードします。

./appengine-java-sdk/bin/appcfg.sh update_cron myapp/war

ファイルが存在している場合、appcfg update もまた cron ジョブの仕様をアップロードします。cron ジョブの詳細については、cron ジョブのドキュメントを参照してください。

ログのダウンロード

App Engine はアプリケーションが出力するメッセージのログを保持します。App Engine はまた各リクエストもログに記録します。アプリケーションのログは、管理コンソールの [ログ] セクションからも参照できます。

アプリケーションのログをさらに詳細に解析する場合、ログ データのファイルをお使いのコンピュータにダウンロードできます。mylogs.txt という名前のファイルにログをダウンロードするには、request_logs アクションを使用し次のコマンドを実行します。

./appengine-java-sdk/bin/appcfg.sh request_logs myapp/war mylogs.txt

デフォルトでは、コマンドは現在のカレンダー日付(太平洋時間の真夜中以降)、INFO 以上のログ レベル(DEBUG レベル メッセージを除く)でログ メッセージをダウンロードします。コマンドは、ローカルにあるログ ファイルを上書きします。日数、最低ログ レベル、ファイルの上書きまたは既存のログ ファイルへの追加をコマンド ラインのオプションで指定できます。オプションの詳細については、下記をご覧ください。

コマンドライン引数

AppCfg コマンドは、オプションをセット(アクションとそのアクションの引数)で使用します。

使用できるアクションは次のとおりです。

appcfg.sh [options] update <war-location>

アプリケーションのルートディレクトリを指定して、ファイルをアップロードします。アプリケーション ID とバージョンは appengine-web.xml ファイルから取得します。

appcfg.sh [options] rollback <war-location>

指定されたアプリケーションの部分的に完了した更新を元に戻します。このアクションは、更新が中断され、ロックされているためにアプリケーションを更新できないことがコマンドによって報告されている場合に使用できます。

appcfg.sh [options] update_indexes <war-location>

新規に追加したインデックスを含むように、App Engine のデータストア インデックスを更新します。アプリケーションの新バージョンが、インデックス設定に追加されたインデックス定義を必要とする場合、アプリケーションの新バージョンを App Engine にアップロードする前にインデックス設定を更新することができます。アプリケーションの新バージョンをアップロードする数時間前にこのアクションを実行しておけば、その間にインデックスを構築し、アプリケーションの展開前に準備を完了しておくことができます。

appcfg.sh [options] request_logs <war-location> <output-file>

App Engine で実行しているアプリケーションのログ データを取得します。output-file は作成または置き換えるファイルの名前です。output-file がハイフン(-)であれば、ログ データはコンソールに出力されます。次のオプションが request_logs に適用されます。

--num_days=...

取得するログ データの日数。本日の午前 0 時 UTC まで取得。0 値は取得可能なログをすべて取得します。--append が設定されている場合のデフォルトは 0 で、それ以外の場合のデフォルトは 1 になります。

--severity=...

取得するログ メッセージの最低ログ レベル。値はログ レベルに対応する数字で、4 は「CRITICAL(致命的)」、3 は「ERROR(エラー)」、2 は「WARNING(警告)」、1 は「INFO(情報)」、0 は「DEBUG(デバッグ)」となります。指定されたログ レベル以上のすべてのメッセージを取得します。デフォルトは 1(INFO)です。

appcfg.sh [options] help <war-location>

指定されたアクションに関するヘルプ メッセージを出力し、終了します。

AppCfg コマンドは、すべてのアクションで次のオプションを指定することができます。

--email=...

アプリケーション管理者の Google アカウントのメール アドレスです(ログインを要求されるアクションの場合)。これが省略されており、以前のコマンド使用で Cookie が保存されていない場合、コマンド プロンプトでこの値が求められます。

--server=...

App Engine サーバーのホスト名です。デフォルトでは appengine.google.com になっています。

--host=...

ローカル マシンのホスト名です。リモート プロシージャの呼び出しに使用されます。

--sdk_root=...

App Engine Java SDK へのパス。ツールの場所と異なる場合に指定します。

--passin

管理者のログイン用認証情報を Cookie として保存しません。ログイン時に毎回、パスワードの入力を求めます。