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

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

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

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

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

Elastic Beanstalk Tomcat プラットフォーム設定には、アプリケーションにリクエストを転送するリバースプロキシが含まれます。デフォルトサーバーは Apache HTTP Server (バージョン 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 マネジメントコンソール で適用される設定は、設定ファイルに同じ設定があれば、それらの設定を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト設定を環境に固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、「設定オプション」を参照してください。

AWS マネジメントコンソールでの Tomcat 環境の設定

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

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

お客様の環境のソフトウェア構成設定にアクセスするには

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

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

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

  4. [Software Configuration] セクションで、設定アイコン (  を編集します。 ) を選択します。

JVM コンテナオプション

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

注記

使用可能なメモリは、EC2 インスタンスタイプによって異なります。Elastic Beanstalk 環境で使用可能な EC2 インスタンスタイプの詳細については、『Amazon Elastic Compute Cloud User Guide for Linux』の「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 バケットにコピーするかどうかを指定します。

環境プロパティ

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

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

注記

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

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

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

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

設定ファイル

設定ファイル を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクを実行できます。

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

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

    • XmsJVM コマンドラインオプション

    • XmxJVM コマンドラインオプション

    • XX:MaxPermSizeJVM のパーマネント領域の最大サイズ

    • JVM OptionsJVM コマンドラインオプション

  • aws:elasticbeanstalk:application:environment – 環境プロパティを設定します。

  • 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:
    /pub: public

詳細については、「Java と Tomcat プラットフォームのオプション」を参照してください。

プロキシサーバーを設定する

Tomcat プラットフォームはリバースプロキシを使用して、インスタンスのポート 80 から、ポート 8080 でリッスンしている Tomcat ウェブコンテナにリクエストを中継します。Elastic Beanstalk は、拡張または独自の設定で完全に上書きできるデフォルトのプロキシ設定を提供します。

Tomcat プラットフォームはデフォルトでプロキシに Apache 2.2 を使用します。ソースコードに設定ファイルを含めることにより、nginx を使用する選択ができます。

例 .ebextensions/nginx-proxy.config

option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: nginx

デフォルトの Apache 設定の拡張

Elastic Beanstalk のデフォルトの Apache 設定を拡張するには、アプリケーションソースバンドルの .ebextensions/httpd/conf.d というフォルダに .conf 設定ファイルを追加します。Elastic Beanstalk の Apache 設定では、このフォルダに .conf ファイルが自動的に含まれます。

~/workspace/my-app/
|-- .ebextensions
|   -- httpd
|      -- conf.d
|         -- myconf.conf
|         -- ssl.conf
-- index.jsp

たとえば、次の設定では、ポート 5000 にリスナーを追加します。

例 .ebextensions/httpd/conf.d/port5000.conf

listen 5000
<VirtualHost *:5000>
  <Proxy *>
    Order Allow,Deny
    Allow from all
  </Proxy>
  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>

Elastic Beanstalk のデフォルトの Apache 設定を完全に上書きするには、ソースバンドルの設定を .ebextensions/httpd/conf/httpd.conf に含めます。

~/workspace/my-app/
|-- .ebextensions
|   `-- httpd
|       `-- conf
|           `-- httpd.conf
`-- index.jsp

Elastic Beanstalk の Apache 設定を上書きするには、[httpd.conf] に次の行を追加し、拡張状態ヘルスレポートおよびモニタリング、レスポンスの圧縮、および静的ファイル用に Elastic Beanstalk の設定をプルします。

Include conf.d/*.conf
Include conf.d/elasticbeanstalk/*.conf

注記

ポート 80 のデフォルトのリスナーを上書きするには、.ebextensions/httpd/conf.d/elasticbeanstalk/00_application.conf というファイルを含めて Elastic Beanstalk の設定を上書きします。

実例については、環境のインスタンスで /etc/httpd/conf/httpd.conf にある Elastic Beanstalk のデフォルト設定ファイルを参照してください。ソースバンドルの .ebextensions/httpd フォルダのすべてのファイルは、デプロイ中に /etc/httpd にコピーされます。

デフォルトの nginx 設定の拡張

Elastic Beanstalk のデフォルトの nginx 設定を拡張するには、アプリケーションソースバンドルの .ebextensions/nginx/conf.d/ というフォルダに .conf 設定ファイルを追加します。Elastic Beanstalk の nginx 設定では、このフォルダに .conf ファイルが自動的に含まれます。

~/workspace/my-app/
|-- .ebextensions
|   `-- nginx
|       `-- conf.d
|           |-- elasticbeanstalk
|           |   `-- my-server-conf.conf
|           `-- my-http-conf.conf
`-- index.jsp

conf.d フォルダーの拡張子が .conf であるファイルが、デフォルト設定の http ブロックに含まれます。conf.d/elasticbeanstalk フォルダーのファイルは、server ブロック内の http ブロックに含まれます。

Elastic Beanstalk のデフォルトの nginx 設定を完全に上書きするには、ソースバンドルの設定を .ebextensions/nginx/nginx.conf に含めます。

~/workspace/my-app/
|-- .ebextensions
|   `-- nginx
|       `-- nginx.conf
`-- index.jsp

Elastic Beanstalk の nginx 設定を上書きするには、設定の server ブロックに次の行を追加し、ポート 80 のリスナー、レスポンスの圧縮、および静的ファイル用に Elastic Beanstalk の設定をプルします。

 include conf.d/elasticbeanstalk/*.conf;

注記

ポート 80 のデフォルトのリスナーを上書きするには、.ebextensions/nginx/conf.d/elasticbeanstalk/00_application.conf というファイルを含めて Elastic Beanstalk の設定を上書きします。

また、設定の http ブロックに次の行を含めて、拡張状態ヘルスレポートおよびモニタリング およびログ用の Elastic Beanstalk の設定をプルします。

    include       conf.d/*.conf;

実例については、環境のインスタンスで /etc/nginx/nginx.conf にある Elastic Beanstalk のデフォルト設定ファイルを参照してください。ソースバンドルの .ebextensions/nginx フォルダのすべてのファイルは、デプロイ中に /etc/nginx にコピーされます。

使用 .gitignore

コンパイルされたクラスファイルと WAR ファイルが Git レポジトリにコミットされる、または Git コマンドの実行時にこれらのファイルに関するメッセージが表示されることを防ぐため、プロジェクトフォルダの .gitignore という名前のファイルに関連ファイルタイプを追加します。

~/workspace/myapp/.gitignore

*.zip
*.class