

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

# Elastic Beanstalk Tomcat プラットフォームを使用する
<a name="java-tomcat-platform"></a>

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

 AWS Elastic Beanstalk Tomcat プラットフォームは、Tomcat ウェブコンテナで実行できる Java ウェブアプリケーションの[プラットフォームバージョンの](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.java)セットです。Tomcat は、nginx プロキシサーバーの背後で実行されます。各プラットフォームブランチは Tomcat の 1 つのメジャーバージョンに対応しています。

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

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

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

**注記**  
Elastic Beanstalk は、Tomcat プラットフォームのプロキシサーバーとして [nginx](https://www.nginx.com/) (デフォルト) および [Apache HTTP サーバー](https://httpd.apache.org/)をサポートします。Elastic Beanstalk Tomcat 環境で (Amazon Linux 2 より前の) Amazon Linux AMI プラットフォームブランチを使用している場合は、[Apache HTTP Server Version 2.2](https://httpd.apache.org/docs/2.2/) を使用することもできます。これらの古いプラットフォームブランチでは、Apache (最新) がデフォルトです。  
 [2022 年 7 月 18 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)に、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「[Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する](using-features.migration-al.md)」を参照してください。

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

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

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

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

**Topics**
+ [Tomcat 環境を設定する](#java-tomcat-options)
+ [Tomcat 設定の名前空間](#java-tomcat-namespaces)
+ [Tomcat 環境用に複数の WAR ファイルをバンドルする](java-tomcat-multiple-war-files.md)
+ [プロジェクトフォルダーを構築する](java-tomcat-platform-directorystructure.md)
+ [プロキシサーバーを設定します](java-tomcat-proxy.md)

## Tomcat 環境を設定する
<a name="java-tomcat-options"></a>

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

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

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

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

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

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

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

### コンテナオプション
<a name="java-tomcat-options-container"></a>

次のプラットフォーム固有のオプションを指定できます。
+ [**プロキシサーバー**] – 環境インスタンスで使用するプロキシサーバーです。デフォルトでは、nginx が使用されます。

### JVM コンテナオプション
<a name="java-tomcat-options-jvm"></a>

Java 仮想マシン (JVM) のヒープサイズは、*[ガベージコレクション](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/introduction.html)*が発生する前にアプリケーションがメモリで作成できるオブジェクトの数を決定します。**JVM の初期ヒープ サイズ** (`-Xms option`) と **JVM の最大ヒープ サイズ** (`-Xmx` オプション) を変更できます。初期ヒープサイズを大きく設定すると、ガベージコレクションの発生前により多くのオブジェクトを作成できますが、ガベージコレクタがヒープを圧縮する時間が長くなります。最大ヒープサイズは、多量の作業を実行中にヒープを拡張する場合に JVM が割り当てることのできる最大メモリ容量を指定します。

**注記**  
使用可能なメモリは、Amazon EC2 インスタンスタイプによって異なります。Elastic Beanstalk 環境で使用可能な EC2 インスタンスタイプの詳細については、*Amazon Elastic Compute Cloud Linux インスタンス用ユーザーガイド* の「[インスタンスタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)」を参照してください。

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

**重要**  
JDK 17 では、Java `-XX:MaxPermSize` オプションのサポートが削除されました。Corretto 17 を搭載した Elastic Beanstalk プラットフォームブランチで実行されている環境でこのオプションを使用すると、エラーが発生します。Elastic Beanstalk は、[2023 年 7 月 13 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-07-13-al2023.html)に Corretto 17 を搭載した Tomcat を実行する最初のプラットフォームブランチをリリースしました。  
詳細については、以下のリソースを参照してください。  
Oracle Java ドキュメンテーション Web サイト: [Java オプションが削除されました](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#removed-java-options) 
Oracle Java ドキュメントのウェブサイト:「[その他の考慮事項](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html)」の「*クラスメタデータ*」セクション

Elastic Beanstalk プラットフォームとそのコンポーネントの詳細については、「*AWS Elastic Beanstalk  プラットフォーム*ガイド」の「[サポートされているプラットフォーム](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html)」を参照してください。

### ログオプション
<a name="java-tomcat-options-logs"></a>

[**Log Options**] セクションには、2 つの設定があります。
+ **インスタンスプロファイル** – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。
+ **[Enable log file rotation to Amazon S3]** (Amazon S3 へのログファイルのローテーションの有効化) - アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

### 静的ファイル
<a name="java-tomcat-options-staticfiles"></a>

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

設定ファイルまたは、Elastic Beanstalk コンソールを使用した静的ファイルの設定の詳細については、「[静的ファイルの提供](environment-cfg-staticfiles.md)」を参照してください。

### 環境プロパティ
<a name="java-tomcat-options-properties"></a>

[**環境プロパティ**] セクションでは、アプリケーションを実行している 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 を使用する方法の詳細については、「」を参照してください[Amazon RDS DB インスタンスを Java Elastic Beanstalk 環境に追加する](java-rds.md)

[2025 年 3 月 26 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html)より前にリリースされた Tomcat プラットフォームバージョンでは、`System.getProperty()` を使用して環境変数にアクセスできます。例えば、次のコードを使用して変数から `API_ENDPOINT` という名前のプロパティを読み取ることができます。

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

[2025 年 3 月 26 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html)以降にリリースされた Tomcat プラットフォームバージョンでは、`System.getenv` を使用してプレーンテキストの環境変数にアクセスすることもできます。引き続き `System.getProperty` を使用して、プレーンテキストの環境変数にアクセスできます。ただし、[シークレットとして保存されている環境変数](AWSHowTo.secrets.env-vars.md)は、`System.getenv` を使用してのみ使用できます。例えば、次のコードを使用して `API_KEY` という名前の環境変数を読み取ることができます。

```
String apiKey = System.getenv("API_KEY");
```

**重要**  
[2025 年 3 月 26 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html)以降にリリースされた Tomcat プラットフォームバージョンで環境変数への `System.getenv()` アクセスを追加すると、Java システムプロパティよりも環境変数を優先するアプリケーションで、または、`System.getProperty()` から `System.getenv()` に明示的に切り替えるときに予期しない動作が発生する可能性があります。  
(コマンドラインを介して渡される) システムプロパティでは特殊文字のシェルエスケープが必要である一方で、環境変数では必要ではないため、Java システムプロパティの代わりに環境変数を使用したときに、値は異なる方法で解決される場合があります。  
アプリケーションが影響を受ける場合は、次の点を考慮してください。  
`System.getenv()` の使用時に環境プロパティ値からエスケープ文字を削除する
明示的に `System.getProperty()` を使用するようにアプリケーションを設定する
アップグレード時にアプリケーションを徹底的にテストして、一貫した動作を確保する

詳細については、「[環境変数とその他のソフトウェアの設定](environments-cfg-softwaresettings.md)」を参照してください。

## Tomcat 設定の名前空間
<a name="java-tomcat-namespaces"></a>

[設定ファイル](ebextensions.md)を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクを実行できます。設定オプションは、[プラットフォーム固有](command-options-specific.md)のものでも、Elastic Beanstalk サービス全体の[すべてのプラットフォーム](command-options-general.md)に適用できるものでもかまいません。設定オプションは、*名前空間*に整理されています。

Tomcat プラットフォームでは、[すべての Elastic Beanstalk 環境でサポートされるオプション](command-options-general.md)に加えて、以下の名前空間のオプションがサポートされます。
+ `aws:elasticbeanstalk:container:tomcat:jvmoptions` – JVM 設定を変更します。この名前空間のオプションは、次のように管理コンソールのオプションに対応します。
  + `Xms` – **JVM コマンドラインオプション**
  + `JVM Options` – **JVM コマンドラインオプション**
+ `aws:elasticbeanstalk:environment:proxy` – 環境のプロキシサーバーを選択します。

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

**Example .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詳細については、「[設定オプション](command-options.md)」を参照してください。

## Amazon Linux AMI (Amazon Linux 2 以前の) Tomcat プラットフォーム
<a name="tomcat.alami"></a>

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

**注意事項**  
このトピックの情報は、Amazon Linux AMI (AL1) に基づくプラットフォームブランチにのみ適用されます。AL2023/AL2 プラットフォームブランチでは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、*別の構成設定が必要です*。
 [2022 年 7 月 18 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)に、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「[Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する](using-features.migration-al.md)」を参照してください。

### Tomcat 設定ネームスペース — Amazon Linux AMI (AL1)
<a name="tomcat.alami.namespaces"></a>

Tomcat Amazon Linux AMI プラットフォームは、次の名前空間で追加オプションをサポートしています。
+ `aws:elasticbeanstalk:container:tomcat:jvmoptions` – このページで前述したこの名前空間のオプションに加えて、以前の Amazon Linux AMI プラットフォームバージョンでは以下もサポートされています。
  + `XX:MaxPermSize` – **JVM のパーマネント領域の最大サイズ**
+ `aws:elasticbeanstalk:environment:proxy` – プロキシサーバーの選択に加えて、レスポンスの圧縮も設定します。

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

**Example .ebextensions/tomcat-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    GzipCompression: 'true'
    ProxyServer: nginx
```

### Elastic Beanstalk 設定ファイルを含める — Amazon Linux AMI (AL1)
<a name="java-tomcat-ebextensions"></a>

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

**Example**  

```
zip -ur {{your_application.war}} .ebextensions
```

複数の WAR ファイルを必要とするアプリケーションの場合は、詳細な手順について、「[Tomcat 環境用に複数の WAR ファイルをバンドルする](java-tomcat-multiple-war-files.md)」を参照してください。