メニュー
AWS Elastic Beanstalk
開発者ガイド

[Procfile] でアプリケーションプロセスを設定する

アプリケーションソースバンドルのルートに JAR ファイルが複数ある場合は、どの JAR を実行するかを Elastic Beanstalk に伝える Procfile ファイルを含める必要があります。単一の JAR アプリケーション用の [Procfile] ファイルを含め、アプリケーションを実行する Java 仮想マシン(JVM)を設定することもできます。

ソースバンドルのルートに Procfile を保存する必要があります。ファイル名では、大文字と小文字が区別されます。Procfile には、プロセス名、コロン、JAR を実行する Java コマンドの形式を使用します。Procfile 内の各行は、正規表現 ^[A-Za-z0-9_]+:\s*.+$ に一致する必要があります。

[Procfile]

web: java -jar server.jar -Xms256m cache: java -jar mycache.jar web_foo: java -jar other.jar

アプリケーション内の主要な JAR を実行するコマンドは、[web] と呼ばれ、Procfile 内のコマンドリストの最初に記載されている必要があります。nginx サーバーは、環境のロードバランサーから受信するすべての HTTP リクエストをアプリケーションに転送します。

デフォルトでは、Elastic Beanstalk はポート 5000 のアプリケーションにリクエストを送信するように nginx プロキシを設定します。デフォルトのポートを上書きするには、PORT 環境プロパティを、主要なアプリケーションがリッスンするポートに設定します。

注記

アプリケーションがリッスンしているポートは、ロードバランサーからリクエストを受信するために nginx サーバーがリッスンするポートに影響を与えません。

[Procfile] を使用して複数のアプリケーションを実行すると、Elastic Beanstalk は各アプリケーションが、以前のポートよりも数値が 100 高いポートをリッスンするものとみなします。Elastic Beanstalk は、各アプリケーションがアクセス可能な PORT 変数を、アプリケーションが実行されることが予想されるポートに設定します。System.getenv("PORT") を呼び出すことで、アプリケーションコード内のこの変数にアクセスできます。

注記

前述の例では、web アプリケーションはポート 5000 を、cache はポート 5100 を、web_foo はポート 5200 をリッスンします。[web] は、PORT 変数を読み取ることでリスニングポートを設定し、ポート番号に 100 を足して [cache] がリッスンしているポートを決定し、リクエストを送信します。

Procfile で開始されたプロセスからの標準出力ストリームと標準エラーストリームは、プロセスに関連する名前のログファイルにキャプチャされ、/var/log に格納されます。たとえば、前述の例では web プロセスが stdout および stderr についてそれぞれ web-1.log および web-1.error.log という名前のログを生成します。

Elastic Beanstalk は、Procfile のすべてのエントリが常に実行されるものとみなし、Procfile に定義されたアプリケーションが終了した場合には自動的に再起動します。終了後に再起動の必要がないコマンドを実行するには、Buildfile を使用します。