Elastic Beanstalk Linux アプリケーションを Amazon Linux 2 に移行する
注記
2022 年 7 月 18 日、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて廃止されます。詳細については、「Amazon Linux AMI (AL1) プラットフォームのリタイアに関するよくある質問」を参照してください。
Elastic Beanstalk アプリケーションが Amazon Linux AMI プラットフォームブランチに基づいていている場合について、アプリケーションの環境を Amazon Linux 2 に移行する方法をこのページで説明します。AWS Elastic Beanstalk では、Amazon Linux 2
相違点と互換性
AL2 ベースのプラットフォームブランチは、既存のアプリケーションに対して下位互換性があるとは限りません。さらに、アプリケーションコードが新しいプラットフォームバージョンに正常にデプロイされた場合でも、オペレーティングシステムとランタイムの違いにより、動作やパフォーマンスが異なる場合があります。Amazon Linux AMI と Amazon Linux 2 は同じ Linux カーネルを共有しますが、初期化システム、libc
バージョン、コンパイラツールチェーン、およびさまざまなパッケージが異なります。詳細については、「Amazon Linux 2 に関するよくある質問
移行プロセス
本番稼働用に移行する準備ができたら、Elastic Beanstalk では、アップグレードを実行するために Blue/Green デプロイが必要です。ブルー/グリーンデプロイ手順を使用した移行に推奨されるベストプラクティスに従って、Amazon Linux 2 プラットフォームブランチに基づく新しい環境を作成し、そのブランチにアプリケーションコードをデプロイします。新しい環境のテストと調整を繰り返し行っている間、既存の本番環境は引き続きアクティブで影響を受けません。新しい環境を本番環境に移行させる準備が完了したら、2 つの環境の CNAME を入れ替えて、新しい環境にトラフィックをリダイレクトします。ブルー/グリーンデプロイのベストプラクティスの詳細については、「方法 2 – Blue/Green デプロイを実行する」を参照してください。ブルー/グリーンデプロイ手順の特定のステップについては、「Elastic Beanstalk を使用したブルー/グリーンデプロイ」を参照してください。
次のリファレンスは、移行を計画する際に役立つ場合があります。
-
「AWS Elastic Beanstalk プラットフォーム」の「Elastic Beanstalk でサポートされているプラットフォーム」
すべての Linux プラットフォームに関する考慮事項
次の表に、Amazon Linux 2 へのアプリケーションの移行を計画する際に注意すべき考慮事項を示します。これらの考慮事項は、特定のプログラミング言語やアプリケーションサーバーに関係なく、任意の Elastic Beanstalk Linux プラットフォームに適用されます。
エリア | 変更と情報 |
---|---|
設定ファイル |
Amazon Linux 2 プラットフォームでは、以前と同じように設定ファイルを使用でき、すべてのセクションは同じように動作します。ただし、特定の設定は、以前の Amazon Linux AMI プラットフォームと同じように機能しない場合があります。次に例を示します。
環境インスタンスでカスタムコードを実行するには、プラットフォームフックを使用することをお勧めします。 AWS CloudFormation リソースへのリファレンスが必要なスクリプトについては、 |
プラットフォームフック |
Amazon Linux 2 プラットフォームは、実行可能ファイルを追加して環境のインスタンス上のディレクトリをフックすることで、環境のプラットフォームを拡張する新しい方法を導入します。以前の Linux プラットフォームバージョンでは、カスタムプラットフォームフックを使用していた可能性があります。これらのフックは、マネージドプラットフォーム用に設計されておらず、サポートされていませんでしたが、場合によっては便利な方法で動作する可能性があります。Amazon Linux 2 プラットフォームバージョンでは、カスタムプラットフォームフックは機能しません。すべてのフックを新しいプラットフォームフックに移行する必要があります。詳細については、Elastic Beanstalk Linux プラットフォームの拡張 の「プラットフォームフック」セクションを展開します。 |
サポートされているプロキシサーバー |
Amazon Linux 2 プラットフォームのバージョンは、Amazon Linux AMI プラットフォームバージョンでサポートされている各プラットフォームと同じリバースプロキシサーバーをサポートします。すべての Amazon Linux 2 プラットフォームのバージョンは、デフォルトのリバースプロキシサーバーとして nginx を使用します。Tomcat、Node.js、PHP、Python のプラットフォームも、代替として Apache HTTPD をサポートします。このセクションの説明の通り、すべてのプラットフォームでプロキシサーバーの設定が一貫して有効にされています。ただし、プロキシサーバーの設定は、Amazon Linux AMI の設定とは少し異なります。すべてのプラットフォームの相違点は次のとおりです。
プラットフォーム固有のプロキシ設定の変更については、プラットフォーム固有の考慮事項 を参照してください。Amazon Linux 2 プラットフォームのプロキシ設定の詳細については、Elastic Beanstalk Linux プラットフォームの拡張 の「リバースプロキシ設定」セクションを展開してください。 |
プロキシ設定の変更 |
各プラットフォームに固有のプロキシ設定の変更に加えて、すべてのプラットフォームに共通に適用されるプロキシ設定の変更があります。環境を正確に設定するには、両方を参照することが重要です。
|
インスタンスプロファイル |
Amazon Linux 2 プラットフォームでは、インスタンスプロファイルを設定する必要があります。インスタンスプロファイルがなくても、環境の作成が一時的に成功する可能性はありますが、インスタンスプロファイルを必要とするアクションが失敗し始めると、作成直後に環境内にエラーが表示されることがあります。詳細については、「Elastic Beanstalk インスタンスプロファイルの管理」を参照してください。 |
拡張ヘルス |
Amazon Linux 2 プラットフォームのバージョンでは、デフォルトで拡張ヘルスが有効になります。これは、環境の作成に Elastic Beanstalk コンソールを使用しない場合、変更されます。コンソールでは、プラットフォームのバージョンに関係なく、可能な限り、デフォルトで拡張ヘルスが有効になります。詳細については、「拡張状態ヘルスレポートおよびモニタリング」を参照してください。 |
カスタム AMI |
環境でカスタム AMI を使用する場合は、Elastic Beanstalk Amazon Linux 2 プラットフォームを使用して、新しい環境用に Amazon Linux 2 に基づく新しい AMI を作成します。 |
カスタムプラットフォーム |
Amazon Linux 2 プラットフォームバージョンのマネージド AMI は、カスタムプラットフォームをサポートしていません。 |
プラットフォーム固有の考慮事項
このセクションでは、特定の Elastic Beanstalk Linux プラットフォームに固有の移行に関する考慮事項について説明します。
Amazon Linux AMI (AL1) に基づく Docker プラットフォームブランチファミリーには、3 つのプラットフォームブランチが含まれます。それぞれに固有の移行パスを設定することをお勧めします。
AL1 プラットフォームブランチ | Amazon Linux 2 への移行パス | ||||||||
---|---|---|---|---|---|---|---|---|---|
Amazon Linux AMI (AL1) 上で動作する Amazon ECS で管理されるマルチコンテナ Docker |
ECS ベースの Docker AL2 プラットフォームブランチECS ベースの Docker AL2 プラットフォームブランチによって、マルチコンテナ Docker AL1 プラットフォームブランチで実行されている環境の移行パスを簡単にできます。
マルチコンテナ Docker Amazon Linux プラットフォームブランチで動作するアプリケーションを Amazon Linux 2 で動作する Amazon ECS プラットフォームブランチに移行する方法についての詳細は、「Amazon Linux 上で動作するマルチコンテナ Docker のAmazon Linux 2 上の ECS への移行」を参照してください。 |
||||||||
Amazon Linux AMI (AL1) 上で動作する Docker Amazon Linux AMI (AL1) 上で動作する事前設定済み Docker (Glassfish 5.0) |
Amazon Linux 2 プラットフォームブランチ上で動作する Docker事前設定済み Docker (Glassfish 5.0) または Amazon Linux AMI (AL1) 上で動作する Docker に基づく環境で動作するアプリケーションは、Amazon Linux 2 で動作する Docker のプラットフォームブランチに基づく環境に移行することをお勧めします。 ご使用の環境が、事前設定済み Docker (Glassfish 5.0) プラットフォームブランチ基づく場合は、「Docker プラットフォームへの GlassFish アプリケーションのデプロイ: Amazon Linux 2 への移行パス」を参照してください。 次の表に、Amazon Linux 2 で動作する Docker のプラットフォームブランチ固有の移行情報を示します。
|
以下の表に、Go プラットフォームの Amazon Linux 2 プラットフォームバージョンの移行情報を示します。
エリア | 変更と情報 |
---|---|
ポートの受け渡し |
Amazon Linux 2 プラットフォームでは、Elastic Beanstalk は |
次の表に、Java SE プラットフォームの Corretto プラットフォームブランチの移行情報を示します。
エリア | 変更と情報 |
---|---|
Corretto と OpenJDK |
Java プラットフォームの Standard Edition (Java SE) を実装するために、Amazon Linux 2 プラットフォームブランチは、Open Java Development Kit (OpenJDK) の AWS ディストリビューションである Amazon Corretto |
ビルドツール |
Amazon Linux 2 プラットフォームには、 |
JAR ファイルの処理 |
Amazon Linux 2 プラットフォームでは、ソースバンドル (ZIP ファイル) に 1 つの JAR ファイルが含まれていて、他のファイルが含まれていない場合、Elastic Beanstalk は JAR ファイルの名前を |
ポートの受け渡し |
Amazon Linux 2 プラットフォームでは、Elastic Beanstalk は |
Java 7 |
Elastic Beanstalk は、Amazon Linux 2 Java 7 プラットフォームブランチをサポートしていません。Java 7 アプリケーションをお持ちの場合は、Corretto 8 または Corretto 11 に移行してください。 |
以下の表に、Tomcat プラットフォームの Amazon Linux 2 プラットフォームバージョンの移行情報を示します。
エリア | 変更と情報 | ||||||
---|---|---|---|---|---|---|---|
設定オプション |
Amazon Linux 2 プラットフォームバージョンでは、Elastic Beanstalk は
|
||||||
アプリケーションのパス |
Amazon Linux 2 プラットフォームでは、環境の Amazon EC2 インスタンス上のアプリケーションのディレクトリへのパスは |
以下の表に、Node.js プラットフォームの Amazon Linux 2 プラットフォームバージョンの移行情報を示します。
エリア | 変更と情報 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
インストールされている Node.js のバージョン |
Amazon Linux 2 プラットフォームでは、Elastic Beanstalk は複数の Node.js プラットフォームブランチを維持し、各プラットフォームバージョンのプラットフォームブランチに対応する Node.js メジャーバージョンの最新バージョンのみをインストールします。たとえば、Node.js 12 プラットフォームブランチの各プラットフォームバージョンには、デフォルトで Node.js 12.x.y のみがインストールされています。Amazon Linux AMI プラットフォームバージョンでは、各プラットフォームバージョンに複数の Node.js バージョンの複数のバージョンをインストールし、単一のプラットフォームブランチのみを維持しました。 アプリケーションで必要な Node.js メジャーバージョンに対応する Node.js プラットフォームブランチを選択します。 |
||||||||||
Apache HTTPD ログファイル名 |
Amazon Linux 2 プラットフォームでは、Apache HTTPD プロキシサーバーを使用する場合、HTTPD ログファイル名は すべてのプラットフォームのログファイル名と場所の詳細については、Elastic Beanstalk が CloudWatch Logs を設定する方法 を参照してください。 |
||||||||||
設定オプション |
Amazon Linux 2 プラットフォームでは、Elastic Beanstalk は
|
以下の表に、PHP プラットフォームの Amazon Linux 2 プラットフォームバージョンの移行情報を示します。
エリア | 変更と情報 |
---|---|
PHP ファイル処理 |
Amazon Linux 2 プラットフォームでは、PHP ファイルは PHP-FPM (CGI プロセスマネージャ) を使用して処理されます。Amazon Linux AMIプラットフォームでは、mod_php (Apache モジュール) を使用しました。 |
プロキシサーバー |
Amazon Linux 2 PHP プラットフォームのバージョンは、nginx と Apache HTTPD プロキシサーバーの両方をサポートします。デフォルトは nginx です。 Amazon Linux AMI PHP プラットフォームのバージョンは、Apache HTTPD のみをサポートします。カスタム Apache 設定ファイルを追加した場合は、 |
以下の表に、Python プラットフォームの Amazon Linux 2 プラットフォームバージョンの移行情報を示します。
エリア | 変更と情報 |
---|---|
WSGI サーバー |
Amazon Linux 2 プラットフォームでは、Gunicorn または、 |
アプリケーションのパス |
Amazon Linux 2 プラットフォームでは、環境の Amazon EC2 インスタンス上のアプリケーションのディレクトリへのパスは |
プロキシサーバー |
Amazon Linux 2 Python プラットフォームのバージョンは、nginx と Apache HTTPD プロキシサーバーの両方をサポートします。デフォルトは nginx です。 Amazon Linux AMI Python プラットフォームのバージョンは、Apache HTTPD のみをサポートします。カスタム Apache 設定ファイルを追加した場合は、 |
以下の表に、Ruby プラットフォームの Amazon Linux 2 プラットフォームバージョンの移行情報を示します。
エリア | 変更と情報 |
---|---|
インストールされている Ruby バージョン |
Amazon Linux 2 プラットフォームでは、Elastic Beanstalk は、各プラットフォームバージョンに、プラットフォームブランチに対応する単一の Ruby バージョンの最新バージョンのみをインストールします。たとえば、Ruby 2.6 プラットフォームブランチの各プラットフォームバージョンには Ruby 2.6.x のみインストールされています。Amazon Linux AMI プラットフォームのバージョンでは、複数の Ruby バージョンの最新バージョン (2.4.x、2.5.x、2.6.x など) がインストールされています。 使用しているプラットフォームブランチに対応していない Ruby バージョンをアプリケーションで使用している場合は、アプリケーションに適した Ruby バージョンのプラットフォームブランチに切り替えることをお勧めします。 |
アプリケーションサーバー |
Amazon Linux 2 プラットフォームでは、Elastic Beanstalk は、すべての Ruby プラットフォームバージョンに対して Puma アプリケーションサーバーのみをインストールします。 Amazon Linux AMI プラットフォームでは、Ruby バージョンごとに 2 種類のプラットフォームブランチをサポートしていました。1 つは Puma アプリケーションサーバーで、もう 1 つは Passenger アプリケーションサーバーです。アプリケーションで Passenger を使用している場合は、Passenger をインストールして使用するように Ruby 環境を設定できます。 詳細な説明と例については、Elastic Beanstalk Ruby プラットフォームを使用するを参照してください。 |