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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

このトピックでは、Elastic Beanstalk Tomcat プラットフォームで実行される Java アプリケーションを設定、構築、実行する方法について説明します。

- AWS Elastic Beanstalk Tomcat プラットフォームは、Tomcat ウェブコンテナで実行できる Java ウェブアプリケーションのプラットフォームバージョンのセットです。Tomcat は、nginx プロキシサーバーの背後で実行されます。各プラットフォームブランチは、Tomcat のメジャーバージョンに対応します。

設定オプションは実行中の環境の設定を変更するために Elastic Beanstalk コンソールで利用できます。環境を終了したときにその設定が失われないようにするため、保存済み設定を使用して設定を保存し、それを後で他の環境に適用することができます。

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

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

注記

Elastic Beanstalk は、Tomcat プラットフォームのプロキシサーバーとして nginx (デフォルト) と Apache Server をサポートしています。 HTTP Elastic Beanstalk Tomcat 環境で Amazon Linux AMIプラットフォームブランチ (Amazon Linux 2 より前) を使用している場合は、Apache HTTP Server バージョン 2.2 を使用するオプションもあります。これらの古いプラットフォームブランチでは、Apache (最新) がデフォルトです。

2022 年 7 月 18 日、Elastic Beanstalk は、Amazon Linux AMI (AL1) に基づくすべてのプラットフォームブランチのステータスを廃止 に設定します。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する」を参照してください。

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

同じウェブサーバーで複数のアプリケーションを実行するには、複数のWARファイルを 1 つのソースバンドルにバンドルできます。複数のWARソースバンドル内の各アプリケーションは、 の名前によって決定されるルートパス (ROOT.war で実行myapp.elasticbeanstalk.com/) またはルートパスのすぐ下にあるパス (app2.war で実行myapp.elasticbeanstalk.com/app2/) で実行されますWAR。単一のWARソースバンドルでは、アプリケーションは常にルートパスで実行されます。

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

Elastic Beanstalk Linux ベースのプラットフォームを拡張するさまざまな方法の詳細については、「Elastic Beanstalk Linux プラットフォームの拡張」を参照してください。

Tomcat 環境を設定する

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

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

Elastic Beanstalk コンソールで Tomcat 環境を設定するには
  1. Elastic Beanstalk コンソール を開き、リージョンリストで を選択します。 AWS リージョン.

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。

コンテナオプション

次のプラットフォーム固有のオプションを指定できます。

  • [プロキシサーバー] – 環境インスタンスで使用するプロキシサーバーです。デフォルトでは、nginx が使用されます。

JVM コンテナオプション

Java 仮想マシン (JVM) のヒープサイズによって、ガベージコレクションが発生する前にアプリケーションがメモリ内に作成できるオブジェクトの数が決まります。 初期JVMヒープサイズ (-Xms option) と最大JVMヒープサイズ ( オプション) を変更できます。-Xmx初期ヒープサイズを大きく設定すると、ガベージコレクションの発生前により多くのオブジェクトを作成できますが、ガベージコレクタがヒープを圧縮する時間が長くなります。最大ヒープサイズは、アクティビティが多いときにヒープを拡張するときに が割り当てJVMることができる最大メモリ量を指定します。

注記

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

永続世代は、クラス定義と関連するメタデータを保存するJVMヒープのセクションです。永続世代のサイズを変更するには、最大サイズ (-XX:MaxPermSize) オプションに新しいJVM PermGen サイズを入力します。この設定が適用されるのは、Java 7 以前のみです。このオプションは 8 JDK で廃止され、MaxMetaspaceサイズ () オプションに置き換えられました。-XX:MaxMetaspaceSize

重要

JDK 17 では、Java -XX:MaxPermSizeオプションのサポートが削除されました。Corretto 17 を搭載した Elastic Beanstalk プラットフォームブランチで実行されている環境でこのオプションを使用すると、エラーが発生します。Elastic Beanstalk は、2023 年 7 月 13 日に Corretto 17 を搭載した Tomcat を実行する最初のプラットフォームブランチをリリースしました。

詳細については、以下のリソースを参照してください。

Elastic Beanstalk プラットフォームとそのコンポーネントの詳細については、「」の「サポートされているプラットフォーム」を参照してください。 AWS Elastic Beanstalk プラットフォームガイド。

ログオプション

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

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

  • Amazon S3 へのログファイルのローテーションを有効にする – アプリケーションの Amazon EC2インスタンスのログファイルをアプリケーションに関連付けられた Amazon S3 バケットにコピーするかどうかを指定します。

静的ファイル

パフォーマンスを向上させるには、静的ファイル セクションを使用して、ウェブアプリケーション内の一連のディレクトリから静的ファイル ( HTMLやイメージなど) を提供するようにプロキシサーバーを設定できます。ディレクトリごとに、仮想パスをディレクトリマッピングに設定します。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接  処理します。

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

環境プロパティ

環境プロパティセクションでは、アプリケーションを実行している 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 Elastic Beanstalk 環境に 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設定を変更します。この名前空間のオプションは、次のように管理コンソールのオプションに対応します。

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

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

  • aws:elasticbeanstalk:environment:proxy – 環境のプロキシサーバーを選択します。

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

例 .ebextensions/tomcat-settings.config
option_settings: aws:elasticbeanstalk:container:tomcat:jvmoptions: Xms: 512m JVM Options: '-Xmn128m' aws:elasticbeanstalk:application:environment: API_ENDPOINT: mywebapi.zkpexsjtmd.us-west-2.elasticbeanstalk.com aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

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

Elastic Beanstalk Tomcat 環境で (Amazon Linux 2 より前の) Amazon Linux AMIプラットフォームバージョンを使用している場合は、このセクションの追加情報をお読みください。

メモ
  • このトピックの情報は、Amazon Linux AMI () に基づくプラットフォームブランチにのみ適用されますAL1。AL2023/AL2 プラットフォームブランチは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、異なる構成設定 が必要です

  • 2022 年 7 月 18 日、Elastic Beanstalk は Amazon Linux AMI (AL1) に基づくすべてのプラットフォームブランチのステータスを廃止 に設定します。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する」を参照してください。

Tomcat Amazon Linux AMIプラットフォームは、次の名前空間で追加のオプションをサポートしています。

  • aws:elasticbeanstalk:container:tomcat:jvmoptions – このページで前述した名前空間のオプションに加えて、古い Amazon Linux AMIプラットフォームバージョンでは以下もサポートされています。

    • XX:MaxPermSizeJVM永続的な生成の最大サイズ

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

次の例の設定ファイルは、プロキシ名前空間の設定オプションの使用を示しています。

例 .ebextensions/tomcat-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: GzipCompression: 'true' ProxyServer: nginx

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

zip -ur your_application.war .ebextensions

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