メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

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

Go アプリケーションを開始するカスタムコマンドを指定するには、[Procfile] という名前のファイルをソースバンドルのルートに含めます。ファイル名では、大文字と小文字が区別されます。Procfile には次の形式を使用します。

<process_name>: <command>

Procfile 内の各行は、正規表現 ^[A-Za-z0-9_]+:\s*.+$ に従う必要があります。

Elastic Beanstalk では、Procfile のプロセスは継続的に実行される必要があります。Elastic Beanstalk はこれらのアプリケーションをモニタリングし、終了されたアプリケーションをすべて再開します。短期間実行されるプロセスには、Buildfile コマンドを使用します。

Go アプリケーションには、前述の正規表現に従う範囲内で、自由に名前を付けることができます。メインアプリケーションの web を呼び出す必要があります。

web: bin/server queue_process: bin/queue_processor foo: bin/fooapp

Elastic Beanstalk は、メインの web アプリケーション環境のルート URL(例: http://my-go-env.elasticbeanstalk.com)で公開します。

Elastic Beanstalk は nginx プロキシを設定し、アプリケーション用の PORT 環境変数で指定されたポート番号のアプリケーションにリクエストを転送します。アプリケーションは、このポートを常にリッスンする必要があります。アプリケーション内のこの変数にアクセスするには、os.Getenv("PORT") メソッドを呼び出します。

Elastic Beanstalk は、PORT 内の最初のアプリケーションのポートの Procfile オプション設定で指定されたポート番号を使用します。Procfile 内の以降のアプリケーションでは、ポート番号は 100 ずつ増えていきます。PORT オプションが設定されていない場合、Elastic Beanstalk は最初のポートに 5000 を使用します。

前述の例では、PORT 環境変数は web アプリケーションで 5000、queue_process アプリケーションで 5100、foo アプリケーションで 5200 となります。

次のように、PORT オプションを [aws:elasticbeanstalk:application:environment] 名前領域で設定すると、最初のポートを指定できます。

option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: PORT value: <first_port_number>

使用しているアプリケーションの環境変数の設定の詳細については、「オプション設定」を参照してください。

Elastic Beanstalk は、名前に web_ プレフィックスがないアプリケーションも実行しますが、これらのアプリケーションはインスタンス外から使用できません。

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

Procfile 内のすべてのパスは、ソースバンドルのルートと関連します。前もってインスタンス上のファイルの場所がわかっている場合は、Procfile に絶対パスを含めることができます。