AWS Elastic Beanstalk
開発者ガイド

AWS Elastic Beanstalk Tomcat プラットフォームを使用する

AWS Elastic Beanstalk Tomcat プラットフォームは、Tomcat ウェブコンテナで実行できる Java ウェブアプリケーションの環境設定のセットです。各設定は Java 8 と Tomcat 8 を含む Tomcat の主要なバージョンに対応しています。

プラットフォームに固有の設定オプションは AWS マネジメントコンソール で実行中の環境の設定を変更するために利用できます。環境を終了したときにその設定が失われないようにするため、保存済み設定を使用して設定を保存し、それを後で他の環境に適用することができます。

ソースコードの設定を保存する場合、設定ファイルを含めることができます。設定ファイルの設定は、環境を作成するたびに、またはアプリケーションをデプロイするたびに適用されます。設定ファイルを使用して、デプロイの間にパッケージをインストールしたり、スクリプトを実行したり、他のインスタンスのカスタマイズオペレーションを実行することもできます。

Elastic Beanstalk Tomcat プラットフォームには、アプリケーションにリクエストを転送するリバースプロキシが含まれます。デフォルトサーバーは Apache HTTP Server バージョン 2.4 です。設定オプションを使用して Elastic Beanstalk を設定することで、従来の Apache HTTP Server Version 2.2 を代わりに使用するか、nginx を使用できます。また、Elastic Beanstalk には、アプリケーションの負荷を減らすため、ソースコードのフォルダから静的アセットに対応するようプロキシサーバーを設定する設定オプションが用意されています。高度なシナリオでは、ソースバンドルに独自の .conf ファイルを含めて、Elastic Beanstalk のプロキシ設定を拡張するか、これを完全に上書きできます。

ウェブアプリケーションアーカイブ (WAR) ファイルの Java アプリケーションは固有の構造でパッケージングする必要があります。必要な構造と、その構造をプロジェクトディレクトリの構造に関連付ける方法については、プロジェクト フォルダを構築するを参照してください。

同じウェブサーバーで複数のアプリケーションサーバーを実行するため、単一のソースバンドルに複数の WAR ファイルをバンドルすることができます。複数のソースバンドルの各アプリケーションは、ルートパス (ROOT.war で実行される [myapp.elasticbeanstalk.com/]) またはその下のパスディレクトリ (app2.war で実行される [myapp.elasticbeanstalk.com/app2/.war]) のいずれかで実行されます (どちらかは WAR の名前によって決まります)。単一の WAR ソースバンドルでは、アプリケーションは常にルートパスで実行されます。

AWS マネジメントコンソール で適用される設定は、設定ファイルに同じ設定があれば、それらの設定を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト設定を環境固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、「設定オプション」を参照してください。

Tomcat 環境を設定する

Elastic Beanstalk Tomcat プラットフォームには、すべてのプラットフォームに用意されている標準オプションに加えて、プラットフォーム固有のオプションがいくつかあります。これらのオプションにより、環境のウェブサーバーで実行される Java 仮想マシン (JVM) を設定し、アプリケーションに情報設定文字列を提供するシステムプロパティを定義できます。

AWS マネジメントコンソール を使用して、Amazon S3 へのログローテーションを有効にでき、アプリケーションが環境から読むことができる変数を設定します。

Elastic Beanstalk コンソールで Tomcat 環境を設定するには

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [ソフトウェア] 設定カテゴリで、[変更] を選択します。

JVM コンテナオプション

Java 仮想マシン (JVM) のヒープサイズは、ガベージコレクションが発生する前にアプリケーションがメモリで作成できるオブジェクトの数を決定します。[Initial JVM Heap Size (-Xms argument)] と [Maximum JVM Heap Size (-Xmx argument)] を変更できます。初期ヒープサイズを大きく設定すると、ガベージコレクションの発生前により多くのオブジェクトを作成できますが、ガベージコレクタがヒープを圧縮する時間が長くなります。最大ヒープサイズは、多量の作業を実行中にヒープを拡張する場合に JVM が割り当てることのできる最大メモリ容量を指定します。

注記

使用可能なメモリは、Amazon EC2 インスタンスタイプによって異なります。Elastic Beanstalk 環境で使用可能な EC2 インスタンスタイプの詳細については、Amazon Elastic Compute Cloud User Guide for Linux Instances の「Instance Types」を参照してください。

JVM ヒープの永続世代は、クラス定義と関連メタデータを保存するセクションです。永続世代のサイズを変更するには、[Maximum JVM PermGen Size (-XX:MaxPermSize argument)] フィールドに新しいサイズを入力します。この設定が適用されるのは、Java 7 以前のみです。

ログオプション

[Log Options] セクションには、2 つの設定があります。

  • [Instance profile] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。

  • Enable log file rotation to Amazon S3 – アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

静的ファイル

パフォーマンスを向上させるには、ウェブアプリケーション内のディレクトリセットの静的ファイル (HTML、画像など) を処理するようにプロキシサーバーを設定できます。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接処理します。仮想パスおよびディレクトリマッピングは、[ソフトウェアの変更] 設定ページの [静的ファイル] セクションで設定できます。

Elastic Beanstalk コンソール による静的ファイルの設定の詳細については、「静的ファイルの提供」を参照してください。

環境プロパティ

[Environment Properties] セクションでは、アプリケーションを実行している Amazon EC2; インスタンスの環境設定を指定できます。環境プロパティは、キーと値のペアでアプリケーションに渡されます。

Tomcat プラットフォームは、必要に応じて外部データベースに接続文字列を渡すため、JDBC_CONNECTION_STRING という名前の Tomcat 環境のプレースホルダプロパティを定義します。

注記

RDS DB インスタンスを環境にアタッチする場合は、Elastic Beanstalk によって提供される Amazon Relational Database Service (Amazon RDS) 環境プロパティから JDBC 接続文字列を動的に構築します。JDBC_CONNECTION_STRING は、Elastic Beanstalk でプロビジョニングされないデータベースインスタンスにのみ使用します。

Java アプリケーションで Amazon RDS を使用する方法の詳細については、「Java アプリケーション環境に Amazon RDS DB インスタンスを追加」を参照してください。

Elastic Beanstalk 内で実行される Tomcat 環境では、System.getProperty() を使って環境変数にアクセスできます。たとえば、次のコードを使用して変数に API_ENDPOINT という名前のプロパティを読み取ることができます。

String endpoint = System.getProperty("API_ENDPOINT");

詳細については、「環境プロパティとその他のソフトウェアの設定」を参照してください。

Tomcat 設定の名前空間

設定ファイル を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクを実行できます。 設定オプションは、Elastic Beanstalk サービスまたは使用できるプラットフォームで定義し、名前空間に整理できます。

Tomcat プラットフォームでは、すべての Elastic Beanstalk 環境でサポートされているオプションに加えて、以下の名前空間でオプションがサポートされます。

  • aws:elasticbeanstalk:container:tomcat:jvmoptions – JVM 設定を変更します。この名前空間のオプションは、次のように管理コンソールのオプションに対応します。

    • Xms – [JVM command line options]

    • Xmx – [JVM command line options]

    • XX:MaxPermSize – [Maximum JVM permanent generation size]

    • JVM Options – [JVM command line options]

  • aws:elasticbeanstalk:environment:proxy – プロキシサーバーを選択し、レスポンスの圧縮を設定します。

  • aws:elasticbeanstalk:environment:proxy:staticfiles – ソースバンドルのパスから静的アセットに対応するようプロキシを設定します。

次の例の設定ファイルは、Tomcat 固有の設定オプションの使用を示しています。

例 .ebextensions/tomcat-settings.config

option_settings: aws:elasticbeanstalk:container:tomcat:jvmoptions: Xms: 512m Xmx: 512m JVM Options: '-Xmn128m' aws:elasticbeanstalk:application:environment: API_ENDPOINT: mywebapi.zkpexsjtmd.us-west-2.elasticbeanstalk.com aws:elasticbeanstalk:environment:proxy: GzipCompression: 'true' ProxyServer: nginx aws:elasticbeanstalk:environment:proxy:staticfiles: /html: statichtml /images: staticimages

Elastic Beanstalk 設定を含みます

.ebextensions 設定ファイルをデプロイするには、アプリケーションソースに含めます。単一のアプリケーションについては、次のコマンドを実行して、圧縮された WAR ファイルに .ebextensions を追加します。

zip -ur your_application.war .ebextensions

複数の WAR ファイルを必要とするアプリケーションの場合は、詳細な手順について、Tomcat 環境用に複数の WAR ファイルをバンドルする を参照してください。

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または AWS CLI を使用して、設定オプションを指定することもできます。詳細については、「設定オプション」を参照してください。