

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

# Elastic Beanstalk プラットフォーム
<a name="concepts-all-platforms"></a>

AWS Elastic Beanstalk には、アプリケーションを構築できるさまざまなプラットフォームが用意されています。ウェブアプリケーションをこれらのプラットフォームのいずれかに設計し、Elastic Beanstalk は選択したプラットフォームバージョンにコードをデプロイして、アクティブなアプリケーション環境を作成します。

Elastic Beanstalk は、さまざまなプログラミング言語、アプリケーションサーバー、および Docker コンテナのプラットフォームを提供します。プラットフォームによっては、同時にサポートされる複数のバージョンがあります。

**Topics**
+ [Elastic Beanstalk プラットフォームの用語集](platforms-glossary.md)
+ [Elastic Beanstalk プラットフォームメンテナンスの責任共有モデル](platforms-shared-responsibility.md)
+ [Elastic Beanstalk プラットフォームのサポートポリシー](platforms-support-policy.md)
+ [Elastic Beanstalk プラットフォームのリリーススケジュール](platforms-schedule.md)
+ [Elastic Beanstalk でサポートされているプラットフォーム](concepts.platforms.md)
+ [Elastic Beanstalk Linux プラットフォーム](platforms-linux.md)
+ [Elastic Beanstalk Linux プラットフォームの拡張](platforms-linux-extend.md)

# Elastic Beanstalk プラットフォームの用語集
<a name="platforms-glossary"></a>

以下は、 AWS Elastic Beanstalk プラットフォームとそのライフサイクルに関連する重要な用語です。

**実行時間**  
アプリケーションコードを実行するために必要なプログラミング言語固有のランタイムソフトウェア (フレームワーク、ライブラリ、インタプリタ、vm など)。

**Elastic Beanstalk コンポーネント**  
Elastic Beanstalk がプラットフォームに追加して Elastic Beanstalk 機能を有効にするためのソフトウェアコンポーネント。たとえば、ヘルス情報を収集して報告するためは、拡張ヘルスエージェントが必要です。

**プラットフォーム**  
オペレーティングシステム (OS)、ランタイム、ウェブサーバー、アプリケーションサーバー、および Elastic Beanstalk コンポーネントの組み合わせです。プラットフォームは、アプリケーションの実行に使用できるコンポーネントを提供します。

**プラットフォームのバージョン**  
特定のバージョンのオペレーティングシステム (OS)、ランタイム、ウェブサーバー、アプリケーションサーバー、および Elastic Beanstalk コンポーネントの組み合わせです。プラットフォームのバージョンに基づいて Elastic Beanstalk 環境を作成し、その環境にアプリケーションをデプロイします。  
プラットフォームのバージョンには、*X.Y.Z* 形式のセマンティックバージョン番号があります。ここで *X* はメジャーバージョン、*Y* はマイナーバージョン、*Z* はパッチバージョンをそれぞれ表します。  
プラットフォームのバージョンは、次のいずれかの状態になります。  
+ *推奨* — サポートされているプラットフォームブランチの最新のプラットフォームバージョン。このバージョンには最新のコンポーネントが含まれており、本番環境での使用をお勧めします。Elastic Beanstalk が新しいプラットフォームバージョンをリリースすると、新しいバージョンは以前のバージョンより優先され、対応するプラットフォームブランチの推奨プラットフォームバージョンになります。
+ *非推奨* – プラットフォームブランチの最新バージョンではないプラットフォームバージョン。これらのバージョンは引き続き機能する可能性がありますが、最新のプラットフォームバージョンに更新することを強くお勧めします。[マネージドプラットフォームの更新](environment-platform-update-managed.md)を使用して、自動的に最新に保つのに役立てることができます。
AWS CLI コマンド **[describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html)** を使用して `PlatformLifecycleState` フィールドをチェックすることで、プラットフォームバージョンが推奨されているかどうかを確認できます。

**プラットフォームブランチ**  
オペレーティングシステム (OS)、ランタイム、Elastic Beanstalk コンポーネントなど、一部のコンポーネントの特定バージョン (通常はメジャー) を共有する一連のプラットフォームバージョンです。例: *Python 3.13 は 64 ビットの Amazon Linux 2023 で実行*。*IIS 10.0 は 64 ビットの Windows Server 2025 で実行*。プラットフォームブランチは、新しいプラットフォームバージョンの形式で更新を受け取ります。ブランチ内の後続の各プラットフォームバージョンは、前のバージョンの更新です。  
サポートされている各プラットフォームブランチの推奨バージョンは、環境の作成に無条件に利用できます。以前のプラットフォームバージョンは、新しいバージョンに置き換えられた時点で、それらを使用していたアクティブな環境または終了した環境を持つアカウントに引き続きアクセスできます。以前のプラットフォームバージョンには最新のコンポーネントがないため、使用することは推奨されません。  
上記の標準可用性を超えて以前のプラットフォームバージョンにアクセスする必要がある場合は、支援について [AWS サポートセンター](https://console.aws.amazon.com/support/home#/)にお問い合わせください。
プラットフォームブランチは、次のいずれかの状態になります。  
+ *サポート対象* – 現在のプラットフォームブランチ。これは、全体が*サポートされているコンポーネント*で構成されています。サポートされているコンポーネントは、サプライヤーによって指定されたサポート終了 (EOL) に達していません。継続的なプラットフォーム更新を受け取り、実稼働環境での使用を推奨します。サポートされているプラットフォームブランチのリストについては、「AWS Elastic Beanstalk プラットフォーム」ガイドの「[Elastic Beanstalk でサポートされているプラットフォーム](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html)」を参照してください。
+ *ベータ* – プレビュー、プレリリースのプラットフォームブランチ。それは本質的に実験的なものです。しばらくの間、継続的なプラットフォームの更新を受け取る可能性がありますが、長期的なサポートはありません。ベータ版のプラットフォームブランチは、実稼働環境での使用にはお勧めしません。評価のためにのみ使用してください。ベータプラットフォームブランチのリストについては、「AWS Elastic Beanstalk プラットフォーム」ガイドの「[パブリックベータの Elastic Beanstalk プラットフォームのバージョン](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-beta.html)」を参照してください。
+ *非推奨* – 1 つ以上のコンポーネント (ランタイムやオペレーティングシステムなど) がサプライヤーによって指定されたサポート終了 (EOL) に近づいている、または EOL に達したプラットフォームブランチ。非推奨のプラットフォームブランチは、廃止日まで新しいプラットフォームバージョンを受信し続けますが、EOL に達したコンポーネントは更新を受信しません。例えば、ランタイムバージョンが EOL に達すると、プラットフォームブランチは非推奨としてマークされますが、プラットフォームブランチの廃止日までオペレーティングシステムの更新を引き続き受け取ります。プラットフォームブランチは、EOL ランタイムバージョンの更新を引き続き受信しなくなります。非推奨のプラットフォームブランチの使用はお勧めしません。
+ *廃止* – 更新を受け取らなくなったプラットフォームブランチ。廃止されたプラットフォームブランチは、Elastic Beanstalk コンソールを使用して新しい Elastic Beanstalk 環境を作成するために利用できません。環境が廃止されたプラットフォームブランチを使用している場合は、更新を引き続き受信するために、サポートされているプラットフォームブランチに更新する必要があります。廃止されたプラットフォームブランチの使用はお勧めしません。廃止されたプラットフォームブランチの詳細については、「[Elastic Beanstalk プラットフォームのサポートポリシー](platforms-support-policy.md)」を参照してください。廃止が予定されているプラットフォームブランチのリストについては、「[廃止するプラットフォームブランチのスケジュール](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-schedule.html#platforms-support-policy.depracation)」を参照してください。過去に廃止されたプラットフォームブランチを確認するには、「[廃止されたプラットフォームブランチ履歴](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-schedule.html#platforms-support-policy.retired)」を参照してください。
環境が非推奨またはリタイアしたプラットフォームブランチを使用している場合は、サポートされているプラットフォームブランチのプラットフォームバージョンに更新することをお勧めします。詳細については、「[Elastic Beanstalk 環境のプラットフォームバージョンの更新](using-features.platform.upgrade.md)」を参照してください。  
AWS CLI コマンド **[describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html)** を使用して `PlatformBranchLifecycleState` フィールドをチェックすることで、プラットフォームブランチの状態を確認できます。

**プラットフォームの更新**  
新しいプラットフォームバージョンのリリースには、プラットフォームの一部のコンポーネント (OS、ランタイム、ウェブサーバー、アプリケーションサーバー、Elastic Beanstalk コンポーネント) への更新が含まれています。Elastic Beanstalk が新しいプラットフォームバージョンをリリースすると、新しいバージョンは以前のバージョンより優先され、対応するプラットフォームブランチの推奨プラットフォームバージョンになります。プラットフォームの更新はセマンティックバージョンの分類に従い、3 つのレベルがあります。  
+ *主な更新* – 既存のプラットフォームバージョンと互換性がない変更を含む更新。新しいメジャーバージョンで正しく実行するようにアプリケーションを変更する必要がある場合があります。主な更新には、新しいプラットフォームのメジャーバージョン番号があります。
+ *マイナー更新* – ほとんどの場合、既存のプラットフォームバージョンと下位互換性がある変更を含む更新。アプリケーションに応じて、新しいマイナーバージョンで正しく実行するようにアプリケーションを変更する必要がある場合があります。マイナーな更新には、新しいプラットフォームのマイナーバージョン番号があります。
+ *パッチ更新* – 既存のプラットフォームのバージョンとの下位互換性がある、メンテナンスリリース (バグ修正、セキュリティの更新、パフォーマンスの改善) で構成される更新。パッチ更新には、新しいパッチのプラットフォームバージョン番号があります。

**管理された更新**  
Elastic Beanstalk でサポートされているプラットフォームバージョンのオペレーティングシステム (OS)、ランタイム、ウェブサーバー、アプリケーションサーバー、および Elastic Beanstalk コンポーネントにパッチおよびマイナーな更新を自動的に適用する Elastic Beanstalk の機能。管理された更新は、同じプラットフォームブランチの新しいプラットフォームバージョンを環境に適用します。管理された更新がパッチ更新のみ、またはマイナーおよびパッチ更新に適用されるよう設定できます。管理された更新を完全に無効にすることもできます。  
詳細については、「[マネージドプラットフォーム更新](environment-platform-update-managed.md)」を参照してください。

# Elastic Beanstalk プラットフォームメンテナンスの責任共有モデル
<a name="platforms-shared-responsibility"></a>

AWS と のお客様は、高レベルのソフトウェアコンポーネントのセキュリティとコンプライアンスを達成する責任を共有します。この責任共有モデルにより、運用上の負担が軽減されます。

詳細については、 AWS [「責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)」を参照してください。

AWS Elastic Beanstalk は、*マネージド更新*機能を提供することで、責任共有モデルの側面を実行するのに役立ちます。この機能では、Elastic Beanstalk でサポートされているプラットフォームのバージョンに対してパッチとマイナーな更新を自動的に適用します。マネージド型の更新が失敗した場合、お客様がそれを確実に認識してすぐにアクションを実行できるように、Elastic Beanstalk は失敗について通知します。

詳細については、「[マネージドプラットフォーム更新](environment-platform-update-managed.md)」を参照してください。

さらに、 Elastic Beanstalk は次のことを行います。
+ 今後 12 か月のその[プラットフォームのサポートポリシー](platforms-support-policy.md)とリタイアのスケジュールを発行します。
+ オペレーティングシステム (OS)、ランタイム、アプリケーションサーバー、ウェブサーバーコンポーネントのパッチ、マイナーな更新、およびメジャーな更新を、通常は利用可能になってから 30 日以内にリリースします。Elastic Beanstalk は、サポートされているプラットフォームのバージョンに含まれている Elastic Beanstalk コンポーネントの更新を作成します。その他のすべての更新は、サプライヤ (所有者またはコミュニティ) から直接取得されます。

サポート対象プラットフォームのすべてのアップデートは、AWS Elastic Beanstalk  リリースノートガイドの [リリースノート](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/relnotes.html) でお知らせします。また、AWS Elastic Beanstalk  プラットフォームガイドには、サポートされているすべてのプラットフォームとそのコンポーネントのリスト、プラットフォームの履歴が記載されています。詳細については、「[サポートされているプラットフォームとコンポーネント履歴](concepts.platforms.md#concepts.platforms.list)」を参照してください。

お客様は次の操作を行う必要があります。
+ 管理するすべてのコンポーネントを更新します (責任共有モデルでは**お客様**として識別されます）。 AWS [https://aws.amazon.com/compliance/shared-responsibility-model/](https://aws.amazon.com/compliance/shared-responsibility-model/)これには、アプリケーションのセキュリティ、データ、アプリケーションに必要でお客様がダウンロードしたコンポーネントのセキュリティの確保が含まれます。
+ Elastic Beanstalk 環境が、サポートされているプラットフォームバージョンで実行されていることを確認します。リタイアしているプラットフォームバージョンで実行されている環境は、サポートされているバージョンに移行します。
+ Elastic Beanstalk 環境にカスタム Amazon マシンイメージ (AMI) を使用している場合は、カスタム AMI へのパッチ適用、メンテナンス、およびテストによって、サポートされている Elastic Beanstalk プラットフォームバージョンと互換性がある最新の状態を維持します。カスタム AMI での環境管理の詳細については、「[Elastic Beanstalk 環境でのカスタム Amazon マシンイメージ (AMI) の使用](using-features.customenv.md)」を参照してください。
+ 管理された更新で失敗したすべての問題を解決し、更新を再試行します。
+ Elastic Beanstalk で管理されている更新をオプトアウトした場合は、OS、ランタイム、アプリケーションサーバー、ウェブサーバーに自分でパッチを適用します。これを行うには、[手動でプラットフォームの更新を適用](using-features.platform.upgrade.md)するか、関連するすべての環境リソースでコンポーネントに直接パッチを適用します。
+ 責任 AWS [共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)に従って、Elastic Beanstalk の外部で使用する AWS サービスのセキュリティとコンプライアンスを管理します。

# Elastic Beanstalk プラットフォームのサポートポリシー
<a name="platforms-support-policy"></a>

Elastic Beanstalk は、サプライヤー (所有者またはコミュニティ) から引き続き継続的なマイナーおよびパッチ更新を受け取るプラットフォームブランチをサポートします。関連用語の詳細な定義については、「[Elastic Beanstalk プラットフォームの用語集](platforms-glossary.md)」を参照してください。

## 廃止されたプラットフォームブランチ
<a name="platforms-support-policy.retired-platforms"></a>

サポートされているプラットフォームブランチのコンポーネントがサプライヤーによって End of Life (EOL) とマークされた場合、Elastic Beanstalk はそのプラットフォームブランチを廃止とマークします。プラットフォームブランチのコンポーネントには、オペレーティングシステム (OS)、ランタイム言語バージョン、アプリケーションサーバー、ウェブサーバーなどがあります。

プラットフォームブランチが廃止とマークされると、次のポリシーが適用されます。
+ Elastic Beanstalk は、セキュリティ更新を含むメンテナンス更新の提供を停止します。
+ Elastic Beanstalk では、廃止されたプラットフォームブランチのテクニカルサポートがなくなります。
+ Elastic Beanstalk は、このプラットフォームブランチを、Elastic Beanstalk の新しいお客様が新しい環境へのデプロイに使用できるとマークしなくなります。リタイアしたプラットフォームブランチで実行されているアクティブな環境を持つ既存のお客様には、発表されたリタイア日から 90 日間の猶予期間があります。

**注記**  
廃止されたプラットフォームブランチは、Elastic Beanstalk コンソールでは使用できません。ただし、廃止されたプラットフォームブランチに基づく既存の環境を持つお客様は AWS CLI、、EB CLI、および EB API を通じて利用できます。また、既存のお客様は [[環境のクローンを作成]](using-features.managing.clone.md) コンソールと [[環境の再構築]](environment-management-rebuild.md) コンソールを使用できます。

廃止が予定されているプラットフォームブランチのリストについては、次の「Elastic Beanstalk プラットフォームスケジュール」トピックの「[廃止されるプラットフォームブランチのスケジュール](platforms-schedule.md#platforms-support-policy.depracation)」を参照してください。

環境のプラットフォームブランチの廃止時に予想されることの詳細については、「[プラットフォームの廃止に関するよくある質問](using-features.migration-al.FAQ.md)」を参照してください。

## 90 日間の猶予期間経過後
<a name="platforms-support-policy.beyond-grace"></a>

廃止されたプラットフォームブランチのポリシーでは、環境へのアクセスを削除したり、リソースを削除したりすることはありません。ただし、廃止されたプラットフォームブランチで Elastic Beanstalk 環境を実行することにはリスクがあるため、既存のお客様は注意する必要があります。そのような環境は、予測不能な状況になることがあります。サプライヤーがコンポーネントを EOL とマークしているので、廃止されたプラットフォームブランチに対して Elastic Beanstalk でセキュリティ更新プログラム、テクニカルサポート、修正プログラムを提供できないためです。

例えば、リタイアしたプラットフォームブランチで実行されている環境に、有害で重大なセキュリティ脆弱性が現れる可能性があります。または、時間の経過とともに Elastic Beanstalk サービスとの互換性がなくなると、環境での EB API アクションの動作が停止することがあります。このようなリスクの可能性は、リタイアしたプラットフォームブランチ上の環境が長くアクティブなままであるほど、増加します。最近のリリースでコンポーネントサプライヤーから提供される重要なセキュリティ、パフォーマンス、および機能拡張のメリットを継続的に利用できるよう、すべての Elastic Beanstalk 環境を、サポートされているプラットフォームバージョンに更新することを強くお勧めします。

廃止されたプラットフォームブランチでの実行中にアプリケーションに問題が発生し、サポートされているプラットフォームに移行できない場合は、他の代替方法を検討する必要があります。回避策として、アプリケーションを Docker イメージにカプセル化して Docker コンテナとして実行する方法があります。これにより、お客様は、Elastic Beanstalk AL2023/AL2 Docker プラットフォームなどの当社の Docker ソリューションや、Amazon ECS や Amazon EKS などのその他の Docker ベースのサービスを使用できるようになります。Docker 以外の代替方法には、必要なランタイムを完全にカスタマイズできる AWS CodeDeploy サービスが含まれます。

# Elastic Beanstalk プラットフォームのリリーススケジュール
<a name="platforms-schedule"></a>

新しいプラットフォームブランチバージョンの毎月の定期的なリリースに加えて、リリースメンテナンスには以下のプロセスも含まれています。
+  *新しいプラットフォームブランチのリリース* – これは通常、ランタイム言語、オペレーティングシステム、またはアプリケーションサーバーの新しいメジャーバージョンの導入です。
+  *プラットフォームブランチの廃止* – いずれかのコンポーネントが End of Life (EOL) を迎えたときに、プラットフォームブランチを廃止する必要があります。廃止されるブランチのポリシーの詳細については、「[Elastic Beanstalk プラットフォームのサポートポリシー](platforms-support-policy.md)」を参照してください。

**Topics**
+ [リソースを計画する](#platforms-support-policy.resources)
+ [今後のプラットフォームブランチリリース](#platforms-support-policy.upcoming-releases)
+ [廃止されるプラットフォームブランチのスケジュール](#platforms-support-policy.depracation)
+ [リタイアしたプラットフォームブランチの履歴](#platforms-support-policy.retired)
+ [廃止されたサーバーとオペレーティングシステムの履歴](#platforms-support-policy.retired.components)

## リソースを計画する
<a name="platforms-support-policy.resources"></a>

以下のリソースは、Elastic Beanstalk プラットフォームで実行されているアプリケーションのメンテナンスとサポートを計画するのに役立ちます。
+ [AWS Elastic Beanstalk プラットフォームガイド](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/welcome.html) — このガイドでは、各プラットフォームブランチの詳細なコンポーネントリストを提供します。また、リリース日ごとに同じ詳細な内容を含むプラットフォーム履歴も記載されています。このガイドで、プラットフォームブランチの特定のコンポーネントがいつ変更されたかがわかります。アプリケーションの動作が変わった場合は、プラットフォームガイドで発生日を相互参照して、アプリケーションに影響を与えた可能性のあるプラットフォームの変更があったかどうかを確認することもできます。
+ [AWS Elastic Beanstalk リリースノート](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/relnotes.html) — リリースノートは、マイナーリリースとメジャーリリースの両方を含むすべてのプラットフォームリリースを発表しました。これには、毎月のプラットフォーム更新、セキュリティリリース、修正プログラム、廃止のお知らせが含まれます。リリースノートのドキュメントから RSS フィードをサブスクライブできます。

## 今後のプラットフォームブランチリリース
<a name="platforms-support-policy.upcoming-releases"></a>

次の表は、今後の Elastic Beanstalk プラットフォームブランチとその目標リリース日の一覧です。これらの日付は暫定的なものであり、変更される可能性があります。


|  ランタイムバージョン/プラットフォームブランチ  |  オペレーティングシステム  |  目標リリース日  | 
| --- | --- | --- | 
|   Python 3.15   |  Amazon Linux 2023  |  2026 年 11 月  | 
|   Node.js 26   |  Amazon Linux 2023  |  2026 年 11 月  | 
|   .NET 11   |  Amazon Linux 2023  |  2026 年 12 月  | 
|   PHP 8.6   |  Amazon Linux 2023  |  2027 年 1 月  | 
|   Ruby 4.1   |  Amazon Linux 2023  |  2027 年 2 月  | 

## 廃止されるプラットフォームブランチのスケジュール
<a name="platforms-support-policy.depracation"></a>

次の表は、一部のコンポーネントが End of Life (EOL) を迎えるため廃止が予定されている Elastic Beanstalk プラットフォームブランチの一覧です。すべての AL2 ベースのプラットフォームブランチには、Amazon Linux 2 が EOL に達する 2026 年 6 月 30 日までに廃止日があります。Amazon Linux 2 の詳細については、「[Amazon Linux 2 に関するよくある質問](https://aws.amazon.com/amazon-linux-2/faqs/)」を参照してください。

特定のコンポーネントを含むため廃止されるプラットフォームブランチの詳細リストについては、「*AWS Elastic Beanstalk プラットフォーム*」ガイドの[廃止されるプラットフォームバージョン](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-retiring.html)に関するページを参照してください。


|  ランタイムバージョン/プラットフォームブランチ  |  廃止予定日  | 
| --- | --- | 
| PHP 8.1 AL2023 | 2026 年 3 月 31 日 | 
| PHP 8.1 AL2 | 2026 年 3 月 31 日 | 
| Docker AL2 | 2026 年 6 月 30 日 | 
| ECS AL2 | 2026 年 6 月 30 日 | 
| Go 1 AL2 | 2026 年 6 月 30 日 | 
| Corretto 8 AL2 | 2026 年 6 月 30 日 | 
| Corretto 11 AL2 | 2026 年 6 月 30 日 | 
| Corretto 17 AL2 | 2026 年 6 月 30 日 | 
| Corretto 8 with Tomcat 9 AL2 | 2026 年 6 月 30 日 | 
| Corretto 11 with Tomcat 9 AL2 | 2026 年 6 月 30 日 | 
| .NET Core AL2 | 2026 年 6 月 30 日 | 
| Python 3.9 AL2023 | 2026 年 7 月 31 日 | 
| Ruby 3.2 AL2023 | 2026 年 7 月 31 日 | 
| Node.js 20 AL2023 | 2026 年 7 月 31 日 | 
| IIS 10.0 on Windows Server 2016 (& Core) | 2026 年 9 月 30 日 | 
| PHP 8.2 AL2023 | 2027 年 3 月 31 日 | 
| .NET 9 AL2023 | 2027 年 3 月 31 日 | 
| .NET 8 AL2023 | 2027 年 3 月 31 日 | 

## リタイアしたプラットフォームブランチの履歴
<a name="platforms-support-policy.retired"></a>

次の表は、既に廃止済の Elastic Beanstalk プラットフォームブランチの一覧です。これらのプラットフォームブランチとそのコンポーネントの詳細な履歴は、「*AWS Elastic Beanstalk プラットフォーム*」ガイドの「[プラットフォーム履歴](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history.html)」で確認できます。


**Amazon Linux 2023 (AL2023)**  

|  ランタイムバージョン/プラットフォームブランチ  |  リタイア日  | 
| --- | --- | 
|   .NET 6 AL2023  |  2025 年 4 月 8 日  | 
|   Node.js 18 AL2023  |  2025 年 8 月 11 日  | 


**Amazon Linux 2 (AL2)**  

|  ランタイムバージョン/プラットフォームブランチ  |  リタイア日  | 
| --- | --- | 
|   Corretto 11 with Tomcat 8.5 AL2  |  2024 年 10 月 10 日  | 
|   Corretto 8 with Tomcat 8.5 AL2   |  2024 年 10 月 10 日  | 
|   Corretto 11 with Tomcat 7 AL2  |  2022 年 6 月 29 日  | 
|   Corretto 8 with Tomcat 7 AL2   |  2022 年 1 月 29 日  | 
|   Node.js 18 AL2   | 2025 年 8 月 11 日 | 
|   Node.js 16 AL2   | 2024 年 10 月 10 日 | 
|   Node.js 14 AL2   |  2024 年 10 月 10 日  | 
|   Node.js 12 AL2   |  2022 年 12 月 23 日  | 
|   Node.js 10 AL2   |  2022 年 1 月 29 日  | 
|   PHP 8.0 AL2  |  2024 年 10 月 10 日  | 
|   PHP 7.4 AL2  |  2023 年 6 月 9 日  | 
|   PHP 7.3 AL2  |  2022 年 6 月 29 日  | 
|   PHP 7.2 AL2  |  2022 年 1 月 29 日  | 
|   Python 3.8 AL2  |  2025 年 4 月 8 日  | 
|   Python 3.7 AL2  |  2024 年 10 月 10 日  | 
|   Ruby 3.0 AL2  |  2024 年 10 月 10 日  | 
|   Ruby 2.7 AL2  |  2024 年 10 月 10 日  | 
|   Ruby 2.6 AL2  |  2022 年 12 月 23 日  | 
|   Ruby 2.5 AL2  |  2022 年 1 月 29 日  | 


**Amazon Linux AMI (AL1)**  

|  ランタイムバージョン/プラットフォームブランチ  |  リタイア日  | 
| --- | --- | 
|   Single Container Docker   | 2022 年 7 月 18 日 | 
|   Multicontainer Docker   |  2022 年 7 月 18 日  | 
|   Preconfigured Docker - GlassFish 5.0 with Java 8   |  2022 年 7 月 18 日  | 
|   Go 1   |  2022 年 7 月 18 日  | 
|   Java 8   |  2022 年 7 月 18 日  | 
|   Java 7   |  2022 年 7 月 18 日  | 
|   Java 8 with Tomcat 8.5   |  2022 年 7 月 18 日  | 
|   Java 7 with Tomcat 7   |  2022 年 7 月 18 日  | 
|   Node.js   |  2022 年 7 月 18 日  | 
|   PHP 7.2 - 7.3   |  2022 年 7 月 18 日  | 
|   Python 3.6   |  2022 年 7 月 18 日  | 
|  Ruby 2,4, 2.5, 2.6 with Passenger   |  2022 年 7 月 18 日  | 
|   Ruby 2.4, 2.5, 2.6 with Puma  |  2022 年 7 月 18 日  | 
| Go 1.3–1.10 | 2020 年 10 月 31 日 | 
| Java 6 | 2020 年 10 月 31 日 | 
| Node.js 4.x–8.x | 2020 年 10 月 31 日 | 
| PHP 5.4–5.6 | 2020 年 10 月 31 日 | 
| PHP 7.0–7.1 | 2020 年 10 月 31 日 | 
| Python 2.6、2.7、3.4 | 2020 年 10 月 31 日 | 
| Ruby 1.9.3 | 2020 年 10 月 31 日 | 
| Ruby 2.0–2.3 | 2020 年 10 月 31 日 | 

**注記**  
 [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) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。詳細については、「[プラットフォームの廃止に関するよくある質問](using-features.migration-al.FAQ.md)」を参照してください。


**Windows サーバー**  

| ランタイムバージョン/プラットフォームブランチ |  リタイア日  | 
| --- | --- | 
| 64 ビット Windows Server (および Core) 2012 R2 で動作する IIS 8.5 | 2023 年 12 月 4 日 | 
| 64 ビット Windows Server (および Core) 2012 R2 バージョン 0.1.0 で動作する IIS 8.5 |  2022 年 6 月 29 日  | 
| 64 ビット Windows Server (および Core) 2012 R2 バージョン 1.2.0 で動作する IIS 8.5 |  2022 年 6 月 29 日 | 
| 64 ビット Windows Server 2016 (および Core) バージョン 1.2.0 で動作する IIS 10.0 |  2022 年 6 月 29 日 | 
| 64 ビット Windows Server 2012 R1 プラットフォームブランチで動作する IIS 8 | 2022 年 6 月 22 日 | 
| 64 ビット Windows Server 2012 R1 バージョン 0.1.0 で動作する IIS 8  | 2022 年 6 月 22 日 | 
| 64 ビット Windows Server 2012 R1 バージョン 1.2.0 で動作する IIS 8 | 2022 年 6 月 22 日 | 

**注記**  
*Windows 2012 R2* [プラットフォームブランチの廃止についての詳細は、「*AWS Elastic Beanstalk リリースノート*」の「Windows Server 2012 R2 プラットフォームブランチの廃止](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-12-04-windows-2012-retire.html)」を参照してください。

## 廃止されたサーバーとオペレーティングシステムの履歴
<a name="platforms-support-policy.retired.components"></a>

次の表は、Elastic Beanstalk プラットフォームでサポートされなくなったオペレーティングシステム、アプリケーションサーバー、ウェブサーバーの履歴を示しています。これらのコンポーネントを利用したすべてのプラットフォームブランチは廃止されています。日付は、コンポーネントを含む最後の Elastic Beanstalk プラットフォームブランチの廃止日を反映しています。


**オペレーティングシステム**  

|  OS バージョン  |  プラットフォームの廃止日  | 
| --- | --- | 
|   Windows Server 2012 R2 running IIS 8.5  |  2023 年 12 月 4 日  | 
|   Windows Server Core 2012 R2 running IIS 8.5  |  2023 年 12 月 4 日  | 
|  Amazon Linux AMI (AL1)  |  2022 年 7 月 18 日  | 
| Windows Server 2012 R1 | 2022 年 6 月 22 日 | 
| Windows サーバー 2008 R2 | 2019 年 10 月 28 日 | 


**アプリケーションサーバー**  

|  アプリケーションサーバーのバージョン  |  プラットフォームの廃止日  | 
| --- | --- | 
| Tomcat 7 |  2022 年 6 月 29 日 Amazon Linux 2 (AL2) プラットフォーム向け 2022 年 6 月 18 日 Amazon Linux AMI (AL1) プラットフォーム向け  | 
| Tomcat 8 | 2020 年 10 月 31 日 | 
| Tomcat 6 | 2020 年 10 月 31 日 | 


**ウェブサーバー**  

|  ウェブサーバーのバージョン  |  プラットフォームの廃止日  | 
| --- | --- | 
| 64 ビット Windows Server で動作する IIS 8 | 2022 年 6 月 22 日 | 
| Apache HTTP Server 2.2 | 2020 年 10 月 31 日 | 
| Nginx 1.12.2 | 2020 年 10 月 31 日 | 

# Elastic Beanstalk でサポートされているプラットフォーム
<a name="concepts.platforms"></a>

AWS Elastic Beanstalk には、アプリケーションを構築できるさまざまなプラットフォームが用意されています。ウェブアプリケーションをこれらのプラットフォームのいずれかに設計し、Elastic Beanstalk は選択したプラットフォームバージョンにコードをデプロイして、アクティブなアプリケーション環境を作成します。

Elastic Beanstalk は、1 つまたは複数の Amazon EC2 インスタンスなどのアプリケーションを実行するために必要なリソースをプロビジョニングします。Amazon EC2 インスタンスで実行されるソフトウェアスタックは、環境用に選択した特定のプラットフォームバージョンによって異なります。

**プラットフォームブランチのソリューションスタック名**  
特定のプラットフォームブランチバージョンのソリューションスタック名を使用して、環境を [EB CLI](eb-cli3.md)、[Elastic Beanstalk API](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/)、または [AWS CLI](https://aws.amazon.com/cli/) で起動できます。「AWS Elastic Beanstalk Platforms」ガイドには、「[Elastic Beanstalk がサポートするプラットフォーム](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html)」セクションと「[プラットフォーム履歴](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history.html)」セクションの両方で、プラットフォームブランチバージョンの下にソリューションスタック名が一覧表示されています。

環境の作成に使用できるすべてのソリューションスタック名を取得するには、[ListAvailableSolutionStacks](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListAvailableSolutionStacks.html) API または AWS CLI の [https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-available-solution-stacks.html](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-available-solution-stacks.html) を使用します。

アプリケーションがプラットフォームで依存しているソフトウェアをカスタマイズおよび設定できます。詳細については、「[Linux サーバーでのソフトウェアのカスタマイズ](customize-containers-ec2.md)」および「[Windows サーバーでのソフトウェアのカスタマイズ](customize-containers-windows-ec2.md)」を参照してください。最近のリリースに関する詳細なリリースノートは、「[AWS Elastic Beanstalk リリースノート](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/)」で参照できます。

## サポートされているプラットフォームとコンポーネント履歴
<a name="concepts.platforms.list"></a>

「AWS Elastic Beanstalk プラットフォーム」ガイドの「[Elastic Beanstalk でサポートされているプラットフォーム](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html)」セクションには、現在のすべてのプラットフォームブランチバージョンの一覧があります。「プラットフォーム」ガイドには、以前のブランチプラットフォームバージョンのリストを含む、各プラットフォームのプラットフォーム履歴の一覧もあります。各プラットフォームのプラットフォーム履歴を表示するには、次のいずれかのリンクを選択します。
+ [Docker](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-docker.html)
+ [Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-go.html)
+ [Java SE](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-javase.html)
+ [Tomcat (Java SE を実行)](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-java.html)
+ [.NET Core on Linux](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnetlinux.html)
+ [Windows Server の .NET](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnet.html)
+ [Node.js](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-nodejs.html)
+ [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-php.html)
+ [Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-python.html)
+ [Ruby](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-ruby.html)

# Elastic Beanstalk Linux プラットフォーム
<a name="platforms-linux"></a>

Elastic Beanstalk Linux プラットフォームには、多くの機能がすぐに使用できるように用意されています。アプリケーションをサポートするために、いくつかの方法でプラットフォームを拡張できます。詳細については、「[Elastic Beanstalk Linux プラットフォームの拡張](platforms-linux-extend.md)」を参照してください。

Elastic Beanstalk がサポートするプラットフォームのほとんどは、Linux オペレーティングシステムに基づいています。具体的には、これらのプラットフォームは、 が提供する Linux ディストリビューションである Amazon Linux に基づいています AWS。Elastic Beanstalk Linux プラットフォームは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用し、それらのインスタンスは Amazon Linux を実行します。

**Topics**
+ [サポートされている Amazon Linux のバージョン](#platforms-linux.versions)
+ [Elastic Beanstalk Linux プラットフォームのリスト](#platforms-linux.list)
+ [インスタンスデプロイワークフロー](platforms-linux-extend.workflow.md)
+ [Amazon Linux 2 以降で動作する ECS のインスタンスデプロイのワークフロー](platforms-linux-extend.workflow.ecs-al2.md)
+ [Elastic Beanstalk 環境用のプラットフォームスクリプトツール](custom-platforms-scripts.md)

## サポートされている Amazon Linux のバージョン
<a name="platforms-linux.versions"></a>

AWS Elastic Beanstalk は、Amazon Linux 2 および Amazon Linux 2023 に基づくプラットフォームをサポートしています。

Amazon Linux 2 および Amazon Linux 2023 の詳細については、次を参照してください。
+ **Amazon Linux 2** –「Amazon EC2 ユーザーガイド」の「[Amazon Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html)」。
+ **Amazon Linux 2023** –「*Amazon Linux 2023 ユーザーガイド*」の「[Amazon Linux 2023 とは](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html)」

サポートされているプラットフォームバージョンの詳細については、「[Elastic Beanstalk でサポートされているプラットフォーム](concepts.platforms.md)」を参照してください。

**注記**  
Elastic Beanstalk AL1 または AL2 プラットフォームブランチから同等の AL2023 プラットフォームブランチにアプリケーションを移行できます。詳細については、「[Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する](using-features.migration-al.md)」を参照してください。

### Amazon Linux 2023
<a name="platforms-linux.versions.al2023"></a>

AWS は、2023 年 3 月に Amazon Linux 2023 の[一般提供](https://aws.amazon.com//blogs/aws/amazon-linux-2023-a-cloud-optimized-linux-distribution-with-long-term-support/)開始を発表しました。「*Amazon Linux 2023 ユーザーガイド*」には、Amazon Linux 2 と Amazon Linux 2023 の主な違いがまとめられています。詳細については、「ユーザーガイド」の「[Amazon Linux 2 と Amazon Linux 2023 の比較](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html)」を参照してください。

Elastic Beanstalk Amazon Linux 2 プラットフォームと Amazon Linux 2023 プラットフォームの間には高度な互換性があります。ただし、留意すべき違いがいくつかあります。
+ **インスタンスメタデータサービスバージョン 1 (IMDSv1)** – AL2023 プラットフォームでは、[DisableIMDSv1](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) オプション設定がデフォルトで `true` に設定されます。デフォルトは AL2 プラットフォーム上の `false` です。
+ **pkg-repo インスタンスツール** – [pkg-repo](custom-platforms-scripts.md#custom-platforms-scripts.pkg-repo) ツールは、AL2023 プラットフォームで実行されている環境では使用できません。ただし、AL2023 インスタンスにパッケージとオペレーティングシステムの更新を手動で適用することはできます。詳細については、「*Amazon Linux 2023 ユーザーガイド*」の「[パッケージとオペレーティングシステムの更新の管理](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html)」を参照してください。
+ **Apache HTTPd 設定** – AL2023 プラットフォームの Apache `httpd.conf` ファイルには、AL2 の構成設定とは異なるいくつかの構成設定があります。
  + デフォルトでは、サーバーのファイルシステム全体へのアクセスを拒否します。これらの設定については、 Apache ウェブサイトの「[セキュリティのヒント](https://httpd.apache.org/docs/2.4/misc/security_tips.html)」ページの「*デフォルトでサーバーファイルを保護する*」で説明されています。
  + 特に有効になっているディレクトリを除き、すべてのディレクトリ`.htaccess`で をセットアップするためのアクセスを拒否します。この設定については、Apache ウェブサイトの「[セキュリティのヒント](https://httpd.apache.org/docs/2.4/misc/security_tips.html)」ページの「*システム設定の保護*」で説明されています。「[Apache HTTP サーバーチュートリアル: .htaccess ファイル](https://httpd.apache.org/docs/2.4/howto/htaccess.html)」ページには、この設定がパフォーマンスの改善に役立つ可能性がある旨が記載されています。
  + 名前パターン `.ht*` のファイルへのアクセスを拒否します。この設定により、ウェブクライアントは `.htaccess` および `.htpasswd` ファイルを表示できなくなります。

  上記の構成設定は、ご使用の環境に合わせて変更できます。詳細については、「[Apache HTTPD の設定](platforms-linux-extend.proxy.md#platforms-linux-extend.proxy.httpd)」を参照してください。
+ **複数行の環境変数のサポート** – AL2023 プラットフォームは、systemd サービス設定の環境変数とシークレットの複数行値をサポートします。Amazon Linux 2 プラットフォームは、複数行の環境変数値をサポートしていません。この機能強化により、AL2023 プラットフォームで複数行のシークレットと設定値を使用できます。環境変数とシークレットの使用の詳細については、「」を参照してください[Amazon Linux 2 環境変数の複数行の値](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.multiline)。
+ **CloudWatch カスタムログ転送** – 廃止された CloudWatch Logs エージェント (`awslogs` パッケージ) は AL2023 プラットフォームでは使用できません。非推奨`awslogs`エージェントをインストールして使用するカスタムログ転送設定がある場合は、Amazon Linux 2 から AL2023 に移行するときに、統合 CloudWatch エージェントを使用するように設定ファイルを更新する必要があります。詳細については、「[カスタムログファイルのストリーミング](AWSHowTo.cloudwatchlogs.md#AWSHowTo.cloudwatchlogs.streaming.custom)」を参照してください。

**プラットフォーム固有の違い**

基本的なオペレーティングシステムの違いに加えて、Amazon Linux 2 と AL2023 ランタイムプラットフォームにはプラットフォーム固有の違いがあります。
+ **.NET プラットフォーム分岐** — .NET プラットフォーム分岐戦略は、Amazon Linux 2 と AL2023 で異なります。Amazon Linux 2 では、.NET Core プラットフォームは .NET メジャーバージョンのローテーションウィンドウを単一のプラットフォームブランチ内に維持します。AL2023 では、各プラットフォームブランチは特定の .NET メジャーバージョン (.NET 9、.NET 10 など) に固定されます。

  フレームワーク依存アプリケーション (プラットフォームにインストールされている .NET ランタイムに依存するアプリケーション) をデプロイする場合は、アプリケーションのターゲット .NET バージョンに一致するプラットフォームブランチを選択する必要があります。自己完結型アプリケーション (独自の .NET ランタイムをバンドルするアプリケーション) をデプロイする場合、アプリケーションの .NET バージョンに関係なく、任意の AL2023 .NET プラットフォームブランチを使用できます。アプリケーションはプラットフォームのインストールされたランタイムに依存しないためです。詳細については、「[.NET Core on Linux Elastic Beanstalk プラットフォーム用のアプリケーションのバンドル](dotnet-linux-platform-bundle-app.md)」を参照してください。
+ **Node.js バージョンの選択** – Amazon Linux 2 の Node.js プラットフォームは、アプリケーションの `package.json` ファイルでの Node.js バージョンの指定をサポートしています。AL2023 の Node.js プラットフォームはこの機能をサポートしていません。プラットフォームブランチが提供するデフォルトの Node.js バージョンを使用する必要があります。Node.js のバージョン管理の詳細については、「」を参照してください[Elastic Beanstalk でのアプリケーションの依存関係の設定](nodejs-platform-dependencies.md)。
+ **Ruby Puma サーバーバージョン** – Amazon Linux 2 の Ruby プラットフォームは、アプリケーションの `Gemfile.lock` ファイルで指定された Puma バージョンを無視し、プラットフォームのデフォルトの Puma バージョンを使用します。AL2023 の Ruby プラットフォームは、存在する`Gemfile.lock`場合は で指定された Puma バージョンに従います。バージョンが指定されていない場合、プラットフォームはプラットフォームのデフォルトの Puma バージョンをインストールします。
+ **PHP パッケージの可用性** – Amazon Linux 2 PHP プラットフォームで利用可能な一部のパッケージは、AL2023 PHP プラットフォームでは利用できません。
  + *MySQL クライアントパッケージ* – `mysql`および `mysql-devel` コマンドラインクライアントパッケージは AL2023 PHP プラットフォームにはインストールされません。アプリケーションで MySQL データベース接続が必要な場合は、両方のプラットフォームで使用できる PHP `mysqli`または `pdo_mysql`拡張機能を使用します。
  + *Compass および Ruby ツール* – Compass CSS フレームワークをサポートする `ruby-devel`および `rubygems`パッケージは、AL2023 PHP プラットフォームにはインストールされません。コンパスは廃止されました。最新の CSS 前処理ツールを代替手段として使用することを検討してください。
+ **Go バージョン管理ツール** – Bザラーバージョン管理システム (`bzr`) は AL2023 Go プラットフォームでは使用できません。バザールは廃止され、AL2023 パッケージリポジトリには含まれていません。バージョン管理には Git、Mercurial、または Subversion を使用します。これらはすべて AL2023 Go プラットフォームで利用できます。

## Elastic Beanstalk Linux プラットフォームのリスト
<a name="platforms-linux.list"></a>

次のリストは、さまざまなプログラミング言語と Docker コンテナに対して Elastic Beanstalk がサポートする Linux プラットフォームを示します。Elastic Beanstalk は、これらすべてに対して、Amazon Linux 2 および Amazon Linux 2023 に基づくプラットフォームを提供します。プラットフォームの詳細については、該当するリンクを選択してください。
+ [Docker (および ECS Docker)](create_deploy_docker.md) 
+ [Go](create_deploy_go.md)
+ [Tomcat (Java SE を実行)](create_deploy_Java.md)
+ [Java SE](create_deploy_Java.md)
+ [.NET Core on Linux](create-deploy-dotnet-core-linux.md)
+ [Node.js](create_deploy_nodejs.md)
+ [PHP](create_deploy_PHP_eb.md)
+ [Python](create-deploy-python-apps.md)
+ [Ruby](create_deploy_Ruby.md)

# インスタンスデプロイワークフロー
<a name="platforms-linux-extend.workflow"></a>

**注記**  
このセクションの情報は、*Amazon Linux 2 および Amazon Linux 2023 で動作する ECS* プラットフォームブランチには適用されません。詳細については、次のセクション「[Amazon Linux 2 以降で動作する ECS のインスタンスデプロイのワークフローAL 2 以降で動作する ECS のインスタンスデプロイのワークフロー](platforms-linux-extend.workflow.ecs-al2.md)」をご覧ください。

環境のプラットフォームを拡張する方法が多数あるため、Elastic Beanstalk がインスタンスをプロビジョニングしたり、インスタンスへのデプロイを実行したりするたびに何が起こるかを知ることは有益です。次の図は、このデプロイワークフロー全体を示しています。デプロイのさまざまなフェーズと、各フェーズで Elastic Beanstalk が実行するステップを示します。

**注意事項**  
この図は、デプロイ中に環境インスタンスで Elastic Beanstalk が実行する一連のステップ全体を表しているわけではありません。この図は、カスタマイズの実行順序とコンテキストを提供するために、説明のために提供します。
簡単にするために、図では、`.platform/hooks/*` フックのサブディレクトリ (アプリケーションデプロイ用) のみを示しており、`.platform/confighooks/*` フックのサブディレクトリ (設定デプロイ用) は示していません。後者のサブディレクトリのフックは、図に示す対応するサブディレクトリのフックとまったく同じステップで実行されます。

![\[Amazon Linux ベースのプラットフォームで実行されている環境インスタンスでの拡張機能の実行順序のワークフロー。\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/platforms-linux-extend-order.png)


デプロイフェーズとステップの詳細を次に示します。

1. **最初のステップ**

   Elastic Beanstalk は、アプリケーションをダウンロードして抽出します。これらの各ステップの後、Elastic Beanstalk は拡張性ステップの 1 つを実行します。

   1. 設定ファイルの [commands:](customize-containers-ec2.md#linux-commands) セクションにあるコマンドを実行します。

   1. ソースバンドルの `.platform/hooks/prebuild` ディレクトリにある実行可能ファイルを実行します (設定デプロイ用の `.platform/confighooks/prebuild`)。

1. **構成する**

   Elastic Beanstalk は、アプリケーションとプロキシサーバーを設定します。

   1. ソースバンドルの `Buildfile` にあるコマンドを実行します。

   1. ソースバンドルの `.platform/nginx` ディレクトリにカスタムプロキシ設定ファイルがある場合は、そのランタイムの場所にコピーします。

   1. 設定ファイルの [container\$1commands:](customize-containers-ec2.md#linux-container-commands) セクションにあるコマンドを実行します。

   1. ソースバンドルの `.platform/hooks/predeploy` ディレクトリにある実行可能ファイルを実行します (設定デプロイ用の `.platform/confighooks/predeploy`)。

1. **デプロイ**

   Elastic Beanstalk は、アプリケーションとプロキシサーバーをデプロイして実行します。

   1. ソースバンドルの `Procfile` ファイルにあるコマンドを実行します。

   1. カスタムプロキシ設定ファイルがあれば、プロキシサーバーを実行または再実行します。

   1. ソースバンドルの `.platform/hooks/postdeploy` ディレクトリにある実行可能ファイルを実行します (設定デプロイ用の `.platform/confighooks/postdeploy`)。

# Amazon Linux 2 以降で動作する ECS のインスタンスデプロイのワークフロー
<a name="platforms-linux-extend.workflow.ecs-al2"></a>

前のセクションでは、アプリケーションデプロイのワークフローのフェーズ全体でサポートされる拡張機能について説明します。Docker プラットフォームブランチ [*Amazon Linux 2 以降で動作する ECS*](create_deploy_docker_ecs.md) にはいくつかの相違点があります。このセクションでは、これらの概念がこの特定のプラットフォームブランチにどのように適用されるかについて説明します。

環境のプラットフォームを拡張する方法が多数あるため、Elastic Beanstalk がインスタンスをプロビジョニングしたり、インスタンスへのデプロイを実行したりするたびに何が起こるかを知ることは有益です。次の図は、*Amazon Linux 2 で動作する ECS* および *Amazon Linux 2023 で動作する ECS* のプラットフォームブランチをベースにした環境のデプロイワークフロー全体を示しています。デプロイのさまざまなフェーズと、各フェーズで Elastic Beanstalk が実行するステップを示します。

前のセクションで説明したワークフローとは異なり、デプロイ設定フェーズでは拡張機能 (`Buildfile` コマンド、`Procfile` コマンド、リバースプロキシ設定) はサポートされていません。

**注意事項**  
この図は、デプロイ中に環境インスタンスで Elastic Beanstalk が実行する一連のステップ全体を表しているわけではありません。この図は、カスタマイズの実行順序とコンテキストを提供するために、説明のために提供します。
簡単にするために、図では、`.platform/hooks/*` フックのサブディレクトリ (アプリケーションデプロイ用) のみを示しており、`.platform/confighooks/*` フックのサブディレクトリ (設定デプロイ用) は示していません。後者のサブディレクトリのフックは、図に示す対応するサブディレクトリのフックとまったく同じステップで実行されます。

![\[ECS ベースの Docker プラットフォームの環境インスタンスでの拡張機能の実行順序のワークフロー。\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/platform-ecs-al2-extended-order.png)


デプロイワークフローステップの詳細を次に示します。

1. `EBhooksDir` の `appdeploy/pre` ディレクトリにある実行可能ファイルを実行します。

1. ソースバンドルの `.platform/hooks/prebuild` ディレクトリにある実行可能ファイルを実行します (設定デプロイ用の `.platform/confighooks/prebuild`)。

1. ソースバンドルの `.platform/hooks/predeploy` ディレクトリにある実行可能ファイルを実行します (設定デプロイ用の `.platform/confighooks/predeploy`)。

1. `EBhooksDir` の `appdeploy/enact` ディレクトリにある実行可能ファイルを実行します。

1. `EBhooksDir` の `appdeploy/post` ディレクトリにある実行可能ファイルを実行します。

1. ソースバンドルの `.platform/hooks/postdeploy` ディレクトリにある実行可能ファイルを実行します (設定デプロイ用の `.platform/confighooks/postdeploy`)。

`EBhooksDir` へのリファレンスは、プラットフォームフックディレクトリのパスを表します。ディレクトリパス名を取得するには、次のように、環境インスタンスのコマンドラインで [get-config](custom-platforms-scripts.md#custom-platforms-scripts.get-config) スクリプトツールを実行します。

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k EBhooksDir
```

# Elastic Beanstalk 環境用のプラットフォームスクリプトツール
<a name="custom-platforms-scripts"></a>

このトピックでは、Amazon Linux プラットフォームを使用する環境向けに AWS Elastic Beanstalk が提供するツールについて説明します。これらのツールは Elastic Beanstalk 環境の Amazon EC2 インスタンスにあります。

## get-config
<a name="custom-platforms-scripts.get-config"></a>

`get-config` ツールを使用して、プレーンテキストの環境変数の値やその他のプラットフォームおよびインスタンス情報を取得します。このツールは `/opt/elasticbeanstalk/bin/get-config` にあります。

### get-config コマンド
<a name="custom-platforms-scripts.get-config.commands"></a>

各 `get-config` ツールコマンドは、特定の種類の情報を返します。いずれかのツールのコマンドを実行するには、次の構文を使用します。

```
$ /opt/elasticbeanstalk/bin/get-config command [ options ]
```

次の例では、`environment` コマンドを実行します。

```
$ /opt/elasticbeanstalk/bin/get-config environment -k PORT
```

選択したコマンドとオプションに応じて、ツールはキーバリューのペアを持つオブジェクト (JSON または YAML)、または単一の値を返します。

SSH を使用して Elastic Beanstalk 環境内のEC2 インスタンスに connect することで `get-config` をテストできます。

**注記**  
`get-config` テストを実行する場合、一部のコマンドでは、基礎となる情報にアクセスするために root ユーザー権限が必要になる場合があります。アクセス許可エラーが表示された場合は、`sudo` でコマンドを再度実行します。  
環境にデプロイするスクリプトでツールを使用するときは、`sudo` を追加する必要はありません。Elastic Beanstalk は、すべてのスクリプトを root ユーザーとして実行します。

以下のセクションでは、各ツールのコマンドについて説明します。

#### optionsettings - 設定オプション
<a name="custom-platforms-scripts.get-config.commands.optionsettings"></a>

`get-config optionsettings` コマンドは、環境に設定され、環境インスタンス上のプラットフォームに使用される設定オプションをリストにしたオブジェクトを返します。これらは、名前空間別に組織されています。

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings
{"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}
```

特定の設定オプションを返すには、`--namespace` (`-n`) オプションを使用して名前空間を指定し、`--option-name` (`-o`) オプションを使用してオプション名を指定します。

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit
256M
```

#### environment - 環境プロパティ
<a name="custom-platforms-scripts.get-config.commands.environment"></a>

`get-config environment` コマンドは、ユーザー設定の環境プロパティと Elastic Beanstalk が提供する環境プロパティの両方のリストを含むオブジェクトを返します。ユーザー設定のプロパティは、[コンソール](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console)で*プレーンテキスト*として、または設定オプションの名前空間 [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) を使用して定義されます。

```
$ /opt/elasticbeanstalk/bin/get-config environment
{"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}
```

例えば、Elastic Beanstalk は統合された Amazon RDS DB インスタンス (`RDS_HOSTNAME` など) に connect する環境プロパティを提供します。これらの RDS 接続プロパティは、の出力に表示されます。`get-config environment`。ただし、出力には表示されません。`get-config optionsettings`。これは、設定オプションで設定されていないためです。

特定の環境プロパティを返すには、`--key` (`-k`) オプションを使用してプロパティキーを指定します。

```
$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY
testvalue
```

**注記**  
`get-config` ツールは、[シークレットを保存する環境変数](AWSHowTo.secrets.env-vars.md)を取得できません。シークレットストアまたはパラメータストアからプログラムで値を取得する方法の詳細については、「[ Secrets Manager を使用する](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.Secrets-Manager)」または「[Systems Manager パラメータストアの使用](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.SSM-parmameter-store)」を参照してください。

#### container - インスタンス上の構成値
<a name="custom-platforms-scripts.get-config.commands.container"></a>

`get-config container` コマンドは、環境インスタンスのプラットフォームと環境設定値をリストにしたオブジェクトを返します。

次の例は、Amazon Linux 2 Tomcat の環境でのコマンドへの出力を示しています。

```
$ /opt/elasticbeanstalk/bin/get-config container
{"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}
```

特定のキーの値を返すには、`--key` (`-k`) オプションを使用してキーを指定します。

```
$ /opt/elasticbeanstalk/bin/get-config container -k environment_name
myenv-1da84946
```

#### addons - アドオンの構成値
<a name="custom-platforms-scripts.get-config.commands.addons"></a>

`get-config addons` コマンドは、環境アドオンの設定情報を含むオブジェクトを返します。これを使用して、環境に関連付けられた Amazon RDS データベースの設定を回復します。

```
$ /opt/elasticbeanstalk/bin/get-config addons
{"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}
```

結果を制限するには、2 つの方法があります。特定のアドオンの値を取得するには、`--add-on` (`-a`) オプションを使用してアドオン名を指定します。

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds
{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}
```

アドオン内の特定のキーの値を返すには、`--key` (`-k`) オプションを追加してキーを指定します。

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME
ebdb
```

#### platformconfig - 定数の構成値
<a name="custom-platforms-scripts.get-config.commands.platformconfig"></a>

`get-config platformconfig` コマンドは、プラットフォームのバージョンに一定のプラットフォーム設定情報を含むオブジェクトを返します。同じプラットフォームのバージョンを実行しているすべての環境で、出力は変わりません。コマンドの出力オブジェクトには、次の 2 つの埋め込んであるオブジェクトがあります。
+ `GeneralConfig` - すべての Amazon Linux 2 および Amazon Linux 2023 プラットフォームブランチの最新バージョンで一定の情報が含まれています。
+ `PlatformSpecificConfig` - プラットフォームのバージョンに対して一定で、それに固有の情報が含まれます。

次の例は、*Tomcat 8.5 running Corretto 11* プラットフォームブランチを使用する環境でのコマンドの出力を示しています。

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig
{"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}
```

特定のキーの値を返すには、`--key` (`-k`) オプションを使用してキーを指定します。これらのキーは、2 つの埋め込みオブジェクト間で一意です。キーを含むオブジェクトを指定する必要はありません。

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir
/var/app/staging/
```

### get-config 出力オプション
<a name="custom-platforms-scripts.get-config.global"></a>

出力オブジェクトの形式を指定するには、`--output` オプションを使用します。有効な値は、`JSON` (デフォルト) と `YAML` です。これはグローバルオプションです。コマンド名の前に指定する必要があります。

次の例は、設定オプション値を YAML 形式で返すものです。

```
$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings
aws:elasticbeanstalk:application:environment:
  JDBC_CONNECTION_STRING: ""
aws:elasticbeanstalk:container:tomcat:jvmoptions:
  JVM Options: ""
  Xms: 256m
  Xmx: 256m
aws:elasticbeanstalk:environment:proxy:
  ProxyServer: nginx
  StaticFiles:
        - ""
aws:elasticbeanstalk:healthreporting:system:
  SystemType: enhanced
aws:elasticbeanstalk:hostmanager:
  LogPublicationControl: "false"
```

## pkg-repo
<a name="custom-platforms-scripts.pkg-repo"></a>

**注記**  
`pkg-repo` ツールは、Amazon Linux 2023 プラットフォームに基づく環境では使用できません。ただし、パッケージとオペレーティングシステムの更新を AL2023 インスタンスに手動で適用することはできます。詳細については、「*Amazon Linux 2023 ユーザーガイド*」の「[パッケージとオペレーティングシステムの更新の管理](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html)」を参照してください

緊急の状況によっては、必要な Elastic Beanstalk プラットフォームバージョンでまだリリースされていない Amazon Linux 2 セキュリティパッチで Amazon EC2 インスタンスを更新する必要がある場合があります。デフォルトでは、Elastic Beanstalk 環境で手動更新を実行することはできません。これは、プラットフォームのバージョンが Amazon Linux 2 リポジトリの特定のバージョンにロックされているためです。このロックにより、インスタンスがサポートされ、一貫性のあるソフトウェアバージョンが実行されることが保証されます。緊急の場合、`pkg-repo`ツールを使用すると、新しい Elastic Beanstalk プラットフォームバージョンでリリースされる前に環境にインストールする必要がある場合は、Amazon Linux 2 で yum パッケージを手動で更新する回避策を使用できます。

-`pkg-repo`Amazon Linux 2 プラットフォーム上のツールは、`yum`パッケージリポジトリ。その後、を手動で実行できます**yum update**セキュリティパッチの場合。逆に、ツールを使用して yum パッケージのリポジトリをロックして、さらなる更新を防ぐことで、更新をフォローできます。-`pkg-repo`このツールはにあります`/opt/elasticbeanstalk/bin/pkg-repo`Elastic Beanstalk 環境にあるすべての EC2 インスタンスのディレクトリ。

を使用した変更`pkg-repo`ツールは、ツールが使用されている EC2 インスタンスでのみ作成されます。他のインスタンスに影響したり、環境への今後の更新を妨げたりすることはありません。このトピックで後述する例では、を呼び出して、すべてのインスタンスに変更を適用する方法を説明します。`pkg-repo`スクリプトおよび設定ファイルからのコマンド

**警告**  
このツールは推奨されませんユーザー。ロック解除されたプラットフォームバージョンに適用される手動による変更は、帯域外と見なされます。このオプションは、次のリスクを受け入れる可能性のある緊急の状況にあるユーザーに対してのみ実行できます。  
プラットフォームのバージョンは、環境内のすべてのインスタンスで一貫性が保証されるわけではありません。
を使用して変更された環境`pkg-repo`ツールが正しく機能することは保証されません。Elastic Beanstalk がサポートするプラットフォームではテストおよび検証が行われていません。
テストとバックアウト計画を含むベストプラクティスを適用することを強くお勧めします。ベストプラクティスの促進に役立つ,Elastic Beanstalk コンソールと EB CLI を使用すると、環境のクローンを作成し、環境 URL をスワップできます。これらの操作の詳細については、このガイドの「*環境の管理*」の章の「[ブルー/グリーンデプロイ](using-features.CNAMESwap.md)」を参照してください。

yum リポジトリ構成ファイルを手動で編集する場合は、`pkg-repo`ツールはまずです。-`pkg-repo`yum リポジトリ設定ファイルを手動で編集した Amazon Linux 2 環境では、ツールが意図したとおりに動作しない場合があります。これは、ツールが構成の変更を認識しない可能性があるためです。

Amazon Linux パッケージリポジトリについては、「*Amazon EC2 ユーザーガイド*」の「[パッケージリポジトリ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#package-repository)」のトピックを参照してください。

### pkg-repo コマンド
<a name="custom-platforms-scripts.pkg-repo.commands"></a>

`pkg-repo`ツールのコマンドを実行するには、次の構文を使用します。

```
$ /opt/elasticbeanstalk/bin/pkg-repo command [options]
```

`pkg-repo` コマンドを以下に示します：
+ **lock**— をロックします`yum`リポジトリを特定のバージョンにパッケージ化する
+ **unlock**— ロックを解除します`yum`特定のバージョンのリポジトリをパッケージ化する
+ **status**— すべてのリストを表示します。`yum`パッケージリポジトリとその現在のロックステータス
+ **help**— 1 つのコマンドに関する一般的なヘルプまたはヘルプを表示します

オプションは、以下のようにコマンドに適用されます。
+ `lock`,`unlock`そして`status `— オプション:`-h`,`--help`、またはなし (既定)。
+ `help`— オプション:`lock`,`unlock`,`status`、またはなし (既定)。



次の例では、**unlock** コマンドを実行します。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock
Amazon Linux 2 core package repo successfully unlocked
Amazon Linux 2 extras package repo successfully unlocked
```

次の例では、**lock** コマンドを実行します。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock
Amazon Linux 2 core package repo successfully locked
Amazon Linux 2 extras package repo successfully locked
```

次の例では、**status** コマンドを実行します。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo status
Amazon Linux 2 core package repo is currently UNLOCKED
Amazon Linux 2 extras package repo is currently UNLOCKED
```

次の例では、**help**コマンドの**lock**コマンド。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock
```

次の例では、**help**コマンドの`pkg-repo`ツール。

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help
```

SSH を使用して Elastic Beanstalk 環境内のインスタンスに接続することで `pkg-repo` をテストできます。SSH オプションの 1 つに EB CLI があります[**eb ssh**](eb3-ssh.md)コマンド。

**注記**  
-`pkg-repo`ツールを実行するには root ユーザー権限が必要です。アクセス許可エラーが表示された場合は、`sudo` でコマンドを再度実行します。  
環境にデプロイするスクリプトまたは設定ファイルでツールを使用するときは、`sudo` を追加する必要はありません。Elastic Beanstalk は、すべてのスクリプトを root ユーザーとして実行します。

### pkg-repo の例
<a name="custom-platforms-scripts.pkg-repo.examples"></a>

前のセクションでは、Elastic Beanstalk 環境の個々の EC2 インスタンスでテストするためのコマンドラインの例を示します。このアプローチはテストに役立ちます。ただし、一度に更新されるインスタンスは 1 つだけなので、環境内のすべてのインスタンスに変更を適用するのは現実的ではありません。

より実用的なアプローチは[プラットフォームフック](platforms-linux-extend.hooks.md)スクリプトまたは[`.ebextensions`](ebextensions.md)一貫した方法ですべてのインスタンスに変更を適用するための設定ファイル。

次の例では、を呼び出します。`pkg-repo`の設定ファイルから[`.ebextensions`](ebextensions.md)folder Elastic Beanstalk は、`update_package.config`アプリケーションソースバンドルをデプロイするときにファイルを指定します。

```
.ebextensions
└── update_package.config
```

*docker* パッケージが最新バージョンを受け取るには、この設定で、**yum update** コマンドの *docker* パッケージを指定します。

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update docker -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

この設定では、**yum update**コマンド。その結果、利用可能なすべての更新が適用されます。

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

次の例では、を呼び出します。`pkg-repo`bashスクリプトから[プラットフォームフック](platforms-linux-extend.hooks.md)。Elastic Beanstalk`update_package.sh`にあるスクリプトファイル`prebuild`サブディレクトリ。

```
.platform
└── hooks
    └── prebuild
        └── update_package.sh
```

*docker* パッケージが最新バージョンを受け取るには、このスクリプトで **yum update** コマンドの *docker* パッケージを指定します。パッケージ名を省略すると、すべての利用可能な更新が適用されます。前の設定ファイルの例では、この方法を示しています。

```
### update_package.sh ###

#!/bin/bash

/opt/elasticbeanstalk/bin/pkg-repo unlock
yum update docker -y
/opt/elasticbeanstalk/bin/pkg-repo lock
yum clean all -y
rm -rf /var/cache/yum
```

## download-source-bundle (Amazon Linux AMI のみ)
<a name="custom-platforms-scripts.download"></a>

Amazon Linux AMI プラットフォームブランチ (Amazon Linux 2 より前) では、Elastic Beanstalk は追加ツールを提供していて、それは`download-source-bundle`です。このツールを使用して、プラットフォームのデプロイ中にアプリケーションの出典コードをダウンロードします。このツールは `/opt/elasticbeanstalk/bin/download-source-bundle` にあります。

サンプルスクリプト `00-unzip.sh` は、環境インスタンスの `appdeploy/pre` フォルダにあります。これは `download-source-bundle` を使用して、デプロイ中にアプリケーションの出典コードを `/opt/elasticbeanstalk/deploy/appsource` フォルダにダウンロードする方法を示しています。

# Elastic Beanstalk Linux プラットフォームの拡張
<a name="platforms-linux-extend"></a>

このトピックでは、独自のコマンド、スクリプト、ソフトウェア、設定を使用して Linux プラットフォームを拡張する方法について説明します。デフォルトのプロキシサーバーと設定を変更するには、プラットフォームを拡張する必要がある場合があります。または、プラットフォームがアプリケーションをビルドまたは起動する方法をカスタマイズする必要がある場合があります。

**Topics**
+ [ビルドファイルと Procfile](platforms-linux-extend.build-proc.md)
+ [プラットフォームフック](platforms-linux-extend.hooks.md)
+ [設定ファイル](platforms-linux-extend.config-files.md)
+ [リバースプロキシの設定](platforms-linux-extend.proxy.md)
+ [拡張機能を使用したアプリケーションの例](platforms-linux-extend.example.md)

# ビルドファイルと Procfile
<a name="platforms-linux-extend.build-proc"></a>

プラットフォームによっては、アプリケーションの構築または準備方法をカスタマイズしたり、アプリケーションを実行するプロセスを指定することができます。各プラットフォームのトピックでは、プラットフォームによりサポートされている場合は特に *Buildfile* や *Procfile* について言及されています。特定のプラットフォームについては、「[Elastic Beanstalk プラットフォーム](concepts-all-platforms.md)」を参照してください。

このページで説明されているとおり、サポートされているすべてのプラットフォームでは、構文とセマンティクスは同じです。個々のプラットフォームのトピックでは、それぞれの言語でアプリケーションを構築および実行するために、ファイルの具体的な使用方法について説明しています。

## [Buildfile]
<a name="platforms-linux-extend.build"></a>

アプリケーションのカスタムビルドおよび設定コマンドを指定するには、アプリケーションソースのルートディレクトリに `Buildfile` という名前のファイルを配置します。ファイル名では、大文字と小文字が区別されます。`Buildfile` には、次の構文を使用します。

```
<process_name>: <command>
```

`Buildfile` 内のコマンドは、正規表現 `^[A-Za-z0-9_-]+:\s*[^\s].*$` に一致する必要があります。

Elastic Beanstalk は、`Buildfile` で実行されるアプリケーションをモニタリングしません。`Buildfile` は、短期間実行されてタスクが完了したら終了されるコマンドに使用します。長期間継続的に実行される必要のあるアプリケーションプロセスには、[Procfile](#platforms-linux-extend.proc) を使用します。

`Buildfile` 内のすべてのパスは、出典バンドルのルートと関連します。次の `Buildfile` の例では、`build.sh` がシェルスクリプトとして、ソースバンドルのルートに配置されています。

**Example [Buildfile]**  

```
make: ./build.sh
```

カスタムビルドステップを提供する場合は、`Buildfile` ではなく、最も単純なコマンド以外の `predeploy` プラットフォームフックを使用することをお勧めします。プラットフォームフックは、より豊富なスクリプトとより良いエラー処理を可能にします。プラットフォームフックについては、次のセクションで説明します。

## [Procfile]
<a name="platforms-linux-extend.proc"></a>

アプリケーションを起動して実行するためのカスタムコマンドを指定するには、アプリケーションソースのルートディレクトリに `Procfile` という名前のファイルを配置します。ファイル名では、大文字と小文字が区別されます。`Procfile` には、次の構文を使用します。1 つまたは複数のコマンドを指定できます。

```
<process_name1>: <command1>
<process_name2>: <command2>
...
```

`Procfile` 内の各行は、正規表現 `^[A-Za-z0-9_-]+:\s*[^\s].*$` に一致する必要があります。

長時間継続的に実行されるアプリケーションプロセスには、`Procfile` を使用します。Elastic Beanstalk では、`Procfile` のプロセスは継続的に実行される必要があります。Elastic Beanstalk はこれらのプロセスをモニタリングし、終了されたプロセスをすべて再開します。短期間実行されるプロセスには、[Buildfile](#platforms-linux-extend.build) コマンドを使用します。

`Procfile` 内のすべてのパスは、出典バンドルのルートと関連します。次の例では、`Procfile` は 3 つのプロセスを定義します。最初のプロセスは、この例では `web` と呼ばれますが、*メインウェブアプリケーション*です。

**Example [Procfile]**  

```
web: bin/myserver
cache: bin/mycache
foo: bin/fooapp
```

Elastic Beanstalk は、ポート 5000 のメインウェブアプリケーションにリクエストを転送するようにプロキシサーバーを設定し、このポート番号を設定できます。`Procfile` の一般的な使用方法は、このポート番号をコマンド引数としてアプリケーションに渡すことです。プロキシ設定の詳細については、「[リバースプロキシの設定](platforms-linux-extend.proxy.md)」を参照してください。

Elastic Beanstalk は、`Procfile` プロセスから標準出力ストリームとエラーストリームをログファイルにキャプチャします。Elastic Beanstalk は、プロセスの後にログファイルに名前を付け、`/var/log` に保存します。たとえば、前述の例では `web` プロセスが `web-1.log` および `web-1.error.log` についてそれぞれ `stdout` および `stderr` という名前のログを生成します。

# プラットフォームフック
<a name="platforms-linux-extend.hooks"></a>

プラットフォームフックは、環境のプラットフォームを拡張するために特別に設計されています。これらは、アプリケーションのソースコードの一部としてデプロイするカスタムスクリプトおよび他の実行可能ファイルで、Elastic Beanstalk によって、さまざまなインスタンスプロビジョニング段階で実行されます。

**注記**  
プラットフォームフックは、Amazon Linux AMI プラットフォームのバージョン (Amazon Linux 2 より前) ではサポートされていません。

## アプリケーションのデプロイプラットフォームフック
<a name="platforms-linux-extend.hooks.appdeploy"></a>

*アプリケーションのデプロイ*は、デプロイ用の新しいソースバンドルを提供する場合、またはすべての環境インスタンスの終了および再作成が必要な設定の変更を行う場合に発生します。

アプリケーションのデプロイ中に実行されるプラットフォームフックを提供するには、ソースバンドルの `.platform/hooks` ディレクトリの下にある以下のサブディレクトリのいずれかにファイルを配置します。
+ `prebuild` - ファイルは、Elastic Beanstalk プラットフォームエンジンがアプリケーションソースバンドルをダウンロードして抽出した後、アプリケーションとウェブサーバーをセットアップおよび設定する前に実行されます。

  `prebuild` ファイルは、設定ファイルの [commands](customize-containers-ec2.md#linux-commands)セクションにあるコマンドを実行した後、および `Buildfile` コマンドを実行する前に実行されます。
+ `predeploy` - ここでのファイルは、Elastic Beanstalk アプリケーションとウェブサーバーをセットアップして設定した後、最終的なランタイムの場所にデプロイする前に実行されます。

  `predeploy` ファイルは、設定ファイルの [container\$1commands](customize-containers-ec2.md#linux-container-commands)セクションにあるコマンドを実行した後、および `Procfile` コマンドを実行する前に実行されます。
+ `postdeploy` - ここでのファイルは、Elastic Beanstalk プラットフォームエンジンがアプリケーションとプロキシサーバーをデプロイした後に実行されます。

  これは、最後のデプロイワークフローのステップです。

## 設定デプロイプラットフォームフック
<a name="platforms-linux-extend.hooks.configdeploy"></a>

*設定デプロイ*は、環境インスタンスを再作成せずに更新だけする設定変更を行った場合に発生します。次のオプションの変更は、設定を更新します。
+ [環境プロパティとプラットフォーム固有の設定](environments-cfg-softwaresettings.md)
+ [静的ファイル](environment-cfg-staticfiles.md)
+ [AWS X-Ray デーモン](environment-configuration-debugging.md)
+ [ログストレージおよびストリーミング](environments-cfg-logging.md)
+ アプリケーションポート (詳細については、「[リバースプロキシの設定](platforms-linux-extend.proxy.md)」を参照してください)

設定のデプロイ中に実行されるフックを提供するには、ソースバンドルの `.platform/confighooks` ディレクトリの下にフックを配置します。アプリケーションのデプロイフックと同じ 3 つのサブディレクトリが適用されます。

## プラットフォームフックの詳細
<a name="platforms-linux-extend.hooks.more"></a>

フックファイルは、バイナリファイル、またはインタプリタパスを含む `#!` 行で始まるスクリプトファイル (`#!/bin/bash` など) です。すべてのファイルには、実行アクセス許可が必要です。フックファイルの実行アクセス許可を設定するために `chmod +x` を使用します。2022 年 4 月 29 日以降にリリースされたすべての Amazon Linux 2023 および Amazon Linux 2 ベースのプラットフォームバージョンでは、Elastic Beanstalk はすべてのプラットフォームフックスクリプトに対して実行アクセス権限を自動的に付与します。この場合、実行アクセス権限を手動で付与する必要はありません。これらのプラットフォームのバージョンのリストについては、「*AWS Elastic Beanstalk リリースノートガイド*」で [2022 年 4 月 29 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-04-29-linux.html#release-2022-04-29-linux.platforms) の Linux リリースノートを参照してください。

Elastic Beanstalk は、ファイル名の辞書順でこれらのディレクトリの各ファイルを実行します。すべてのファイルが `root` ユーザーとして実行されます。プラットフォームフックの現在の作業ディレクトリ (cwd) は、アプリケーションのルートディレクトリです。`prebuild` および `predeploy` ファイルの場合はアプリケーションのステージングディレクトリで、`postdeploy` ファイルの場合は現在のアプリケーションディレクトリです。いずれかのファイルが失敗した場合（ゼロ以外の終了コードで終了した場合）、デプロイは中止され、失敗します。

プラットフォームフックテキストスクリプトに Windows *キャリッジリターン/ラインフィード* (CRLF) 改行文字が含まれていると、失敗することがあります。ファイルを Windows ホストに保存してから Linux サーバーに転送した場合、ファイルには Windows CRLF の改行が含まれていることがあります。[2022 年 12 月 29 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-12-29-linux.html)以降にリリースされたプラットフォームでは、Elastic Beanstalk でプラットフォームフックテキストファイル内の Windows CRLF 文字を *Linux ラインフィード* (LF) 改行文字に自動的に変換します。この日付より前にリリースされた Amazon Linux 2 プラットフォーム上でアプリケーションを実行する場合は、Windows CRLF 文字を Linux LF 文字に変換する必要があります。これを実現する方法の 1 つは、Linux ホストでスクリプトファイルを作成して保存することです。これらの文字を変換するツールはインターネットでも入手できます。

フックファイルは、アプリケーションオプションで定義したすべての環境プロパティ、およびシステム環境変数 `HOME`、`PATH`、および `PORT` にアクセスできます。

環境変数やその他の設定オプションの値をプラットフォームフックスクリプトに取り込むには、Elastic Beanstalk が環境インスタンスに提供する `get-config` ユーティリティを使用できます。詳細については、「[Elastic Beanstalk 環境用のプラットフォームスクリプトツール](custom-platforms-scripts.md)」を参照してください。

# 設定ファイル
<a name="platforms-linux-extend.config-files"></a>

アプリケーションのソースコードの `.ebextensions` ディレクトリに[設定ファイル](ebextensions.md)を追加して、Elastic Beanstalk 環境のさまざまな側面を設定できます。とりわけ、設定ファイルを使用すると、環境のインスタンス上のソフトウェアやその他のファイルをカスタマイズしたり、インスタンスで初期化コマンドを実行できます。詳細については、「[Linux サーバーでのソフトウェアのカスタマイズ](customize-containers-ec2.md)」を参照してください。

設定ファイルを使用して、[設定オプション](command-options.md)を設定することもできます。オプションの多くはプラットフォームの動作を制御し、これらのオプションの一部は[プラットフォーム固有](command-options-specific.md)のものです。

Amazon Linux 2 および Amazon Linux 2023 に基づくプラットフォームの場合、インスタンスをプロビジョニング中の環境インスタンスでカスタムコードを設定および実行するには、*Buildfile*、*Procfile*、および*プラットフォームフック*を使用することをお勧めします。これらのメカニズムについては、このページの前のセクションで説明しています。`.ebextensions` 設定ファイルでコマンドやコンテナコマンドを使用することはできますが、操作は簡単ではありません。たとえば、YAML ファイル内にコマンドスクリプトを記述することは、構文の観点から難しい場合があります。 AWS CloudFormation リソースへの参照が必要なスクリプトには、引き続き`.ebextensions`設定ファイルを使用する必要があります。

# リバースプロキシの設定
<a name="platforms-linux-extend.proxy"></a>

すべての Amazon Linux 2 および Amazon Linux 2023 プラットフォームのバージョンは、デフォルトのリバースプロキシサーバーとして nginx を使用します。Tomcat、Node.js、PHP、Python のプラットフォームも、代替として Apache HTTPD をサポートします。これらのプラットフォームで Apache を選択するには、`aws:elasticbeanstalk:environment:proxy` 名前空間の `ProxyServer` オプションを `apache` に設定します。このセクションの説明の通り、すべてのプラットフォームでプロキシサーバーの設定が一貫して有効にされています。

**注記**  
Amazon Linux AMI プラットフォームのバージョン (Amazon Linux 2 より前) では、異なるプロキシサーバー設定にすることが必要になる場合があります。これらのレガシーの詳細は、このガイドの[それぞれのプラットフォームのトピック](concepts-all-platforms.md)を参照してください。

Elastic Beanstalk は、環境のルート URL 上のメインウェブアプリケーションにウェブトラフィックを転送するように、環境のインスタンスでプロキシサーバーを設定します (例: `http://my-env.elasticbeanstalk.com`)。

デフォルトでは、Elastic Beanstalk はポート 80 に届くリクエストをポート 5000 のメインウェブアプリケーションに送信するようにプロキシを設定します。次の例に示すように、設定ファイルで [aws:elasticbeanstalk: application: environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) 名前空間を使用して `PORT` 環境プロパティを設定することによって、このポート番号を設定できます。

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  <main_port_number>
```

使用しているアプリケーションの環境変数の設定の詳細については、「[オプション設定](ebextensions-optionsettings.md)」を参照してください。

アプリケーションは、プロキシで設定されているポートをリッスンする必要があります。`PORT` 環境プロパティを使用してデフォルトポートを変更した場合、コードは `PORT` 環境変数の値を読み取ることによってポートにアクセスできます。たとえば、Go の `os.Getenv("PORT")` または Java の `System.getenv("PORT")` を呼び出します。複数のアプリケーションプロセスにトラフィックを送信するようにプロキシを設定する場合、複数の環境プロパティを設定し、それらの値をプロキシ設定とアプリケーションコードの両方で使用できます。もう 1 つのオプションは、`Procfile` でコマンド引数としてポート値をプロセスに渡すことです。詳細については、「[ビルドファイルと Procfile](platforms-linux-extend.build-proc.md)」を参照してください。

## nginx の設定
<a name="platforms-linux-extend.proxy.nginx"></a>

Elastic Beanstalk は、デフォルトのリバースプロキシとして nginx を使用し、アプリケーションを Elastic Load Balancing ロードバランサーにマッピングします。Elastic Beanstalk は、拡張または独自の設定で完全に上書きできるデフォルトの nginx 設定を提供します。

**注記**  
nginx `.conf` 設定ファイルを追加または編集するときは、必ず UTF-8 としてエンコードしてください。

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

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- other source files
```

`.platform/nginx/conf.d/` 内の設定ファイルは、nginx 設定の `http` ブロックに含まれています。この場所を、グローバルに適用される設定用に使用します。

デフォルトの nginx `server` ブロック設定を拡張するには、アプリケーションソースバンドルの `.platform/nginx/conf.d/elasticbeanstalk/` というフォルダに `.conf` 設定ファイルを追加します。Elastic Beanstalk の nginx 設定では、`server` ブロック内のこのフォルダに `.conf` ファイルがに含められます。

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- elasticbeanstalk
|               `-- server.conf
`-- other source files
```

この場所を使用して、追加のロケーションブロック、カスタムエラーページ、サーバーレベルのディレクティブなど、サーバー固有の設定を追加します。次の例では、カスタムロケーションブロックを追加します。

**Example .platform/nginx/conf.d/elasticbeanstalk/server.conf**  

```
location /test {
    return 200 "Hello World!";
    add_header Content-Type text/plain;
}
```

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

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- nginx.conf
`-- other source files
```

Elastic Beanstalk の nginx 設定を上書きするには、`nginx.conf` に以下の行を追加することにより、[Elastic Beanstalk の拡張ヘルスレポートおよびモニタリング](health-enhanced.md)、自動アプリケーションマッピング、および静的ファイルに関して Elastic Beanstalk の設定を適用します。

```
 include conf.d/elasticbeanstalk/*.conf;
```

## Apache HTTPD の設定
<a name="platforms-linux-extend.proxy.httpd"></a>

Tomcat、Node.js、PHP、Python のプラットフォームでは、nginx の代わりに Apache HTTPD プロキシサーバーを選択できます。これはデフォルトではありません。次の例では、Apache HTTPD が使用されるように Elastic Beanstalk を設定しています。

**Example .ebextensions/httpd-proxy.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
```
追加の設定ファイルを使用して、Elastic Beanstalk のデフォルト Apache 設定を拡張できます。または、Elastic Beanstalk のデフォルトの Apache 設定を完全に上書きすることもできます。  
Elastic Beanstalk のデフォルトの Apache 設定を拡張するには、アプリケーションソースバンドルの `.conf` というフォルダに `.platform/httpd/conf.d` 設定ファイルを追加します。Elastic Beanstalk の Apache 設定では、このフォルダに `.conf` ファイルが自動的に含められます。  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   -- httpd
|      -- conf.d
|         -- port5000.conf
|         -- ssl.conf
-- index.jsp
```
たとえば、次の Apache 2.4 設定では、ポート 5000 にリスナーを追加します。  

**Example .platform/httpd/conf.d/port5000.conf**  

```
listen 5000
<VirtualHost *:5000>
  <Proxy *>
    Require all granted
  </Proxy>
  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
```
Elastic Beanstalk のデフォルトの Apache 設定を完全に上書きするには、ソースバンドルの `.platform/httpd/conf/httpd.conf` に設定を含めます。  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   `-- httpd
|       `-- conf
|           `-- httpd.conf
`-- index.jsp
```
Elastic Beanstalk の Apache 設定を上書きするには、`httpd.conf` に以下の行を追加することにより、[Elastic Beanstalk の拡張ヘルスレポートおよびモニタリング](health-enhanced.md)、自動アプリケーションマッピング、および静的ファイルに関して Elastic Beanstalk の設定を適用します。  

```
IncludeOptional conf.d/elasticbeanstalk/*.conf
```

# 拡張機能を使用したアプリケーションの例
<a name="platforms-linux-extend.example"></a>

以下の例は、Elastic Beanstalk Amazon Linux 2 および Amazon Linux 2023 プラットフォームでサポートされるいくつかの拡張機能 (`Procfile`、`.ebextensions` 設定ファイル、カスタムフック、およびプロキシ設定ファイル) を備えたアプリケーションソースバンドルを示しています。

```
~/my-app/
|-- web.jar
|-- Procfile
|-- readme.md
|-- .ebextensions/
|   |-- options.config        # Option settings
|   `-- cloudwatch.config     # Other .ebextensions sections, for example files and container commands
`-- .platform/
    |-- nginx/                # Proxy configuration
    |   |-- nginx.conf
    |   `-- conf.d/
    |       |-- custom.conf
    |       `-- elasticbeanstalk/
    |           `-- server.conf
    |-- hooks/                # Application deployment hooks
    |   |-- prebuild/
    |   |   |-- 01_set_secrets.sh
    |   |   `-- 12_update_permissions.sh
    |   |-- predeploy/
    |   |   `-- 01_some_service_stop.sh
    |   `-- postdeploy/
    |       |-- 01_set_tmp_file_permissions.sh
    |       |-- 50_run_something_after_app_deployment.sh
    |       `-- 99_some_service_start.sh
    `-- confighooks/          # Configuration deployment hooks
        |-- prebuild/
        |   `-- 01_set_secrets.sh
        |-- predeploy/
        |   `-- 01_some_service_stop.sh
        `-- postdeploy/
            |-- 01_run_something_after_config_deployment.sh
            `-- 99_some_service_start.sh
```

**注記**  
これらの拡張機能のいくつかは、Amazon Linux AMI プラットフォームのバージョン (Amazon Linux 2 より前) ではサポートされていません。