

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

# Elastic Beanstalk での ECS マネージド Docker プラットフォームブランチの使用
<a name="create_deploy_docker_ecs"></a>

このトピックでは、Amazon Linux 2 および Amazon Linux 2023 の Elastic Beanstalk ECS マネージド Docker プラットフォームブランチの概要について説明します。また、Docker ECS マネージドプラットフォームに固有の設定情報も提供します。

**AL1 上のマルチコンテナ Docker からの移行**  
[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) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。この章では、この廃止されたプラットフォームの設定情報を提供しますが、サポートされている最新のプラットフォームブランチに移行することを強くお勧めします。現在、廃止された *AL1 上で動作するマルチコンテナ Docker* プラットフォームブランチを使用している場合は、最新の *AL2023 上で動作する ECS プラットフォームブランチ*に移行できます。最新のプラットフォームブランチでは、廃止されたプラットフォームブランチのすべての機能がサポートされています。ソースコードを変更する必要はありません。詳細については、「[Elastic Beanstalk アプリケーションを AL1 の ECS マネージドマルチコンテナ Docker から Amazon Linux 2023 の ECS に移行する](migrate-to-ec2-AL2-platform.md)」を参照してください。

## ECS マネージド Docker プラットフォームの概要
<a name="create_deploy_docker_ecs_platform"></a>

Elastic Beanstalk は、Amazon Elastic Container Service (Amazon ECS) を使用して、ECS マネージド Docker 環境へのコンテナのデプロイを調整します。Amazon ECS は、Docker コンテナを実行するインスタンスのクラスターを管理するためのツールを供給します。Elastic Beanstalk は、クラスター作成、タスクの定義と実行のような Amazon ECS のタスクを処理します。環境内のインスタンスはそれぞれ、`Dockerrun.aws.json` v2 ファイルで定義される同じセットのコンテナを実行します。Docker を最大限に活用するため、Elastic Beanstalk では、Amazon EC2 インスタンスが複数の Docker コンテナを並行して実行できる環境を作成することができます。

次の図は、Auto Scaling グループの各 Amazon EC2 インスタンスで実行される 3 つの Docker コンテナで設定された Elastic Beanstalk 環境の例を示しています。

![Elastic Beanstalk ロードバランサー、Auto Scaling グループ、コンテナ化されたタスクを含む 環境。](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/aeb-multicontainer-docker-example.png)


## Elastic Beanstalk によって作成された Amazon ECS リソース
<a name="create_deploy_docker_ecs_resources"></a>

ECS マネージド Docker プラットフォームを使用して環境を作成する場合、環境の構築中に Elastic Beanstalk によって自動的に複数の Amazon Elastic Container Service リソースが作成および設定されます。これにより、各 Amazon EC2 インスタンスに必要なコンテナが作成されます。
+ **Amazon ECS クラスター** – Amazon ECS のコンテナインスタンスはクラスターに整理されます。Elastic Beanstalk とともに使用すると、ECS マネージド Docker 環境ごとに必ず 1 つのクラスターが作成されます。ECS クラスターには、Auto Scaling グループのキャパシティープロバイダーやその他のリソースも含まれています。
+ **Amazon ECS タスク定義** – Elastic Beanstalk は、プロジェクト内の `Dockerrun.aws.json` v2 ファイルを使用して、環境内のコンテナインスタンスの設定に使用される Amazon ECS タスク定義を生成します。
+ **Amazon ECS タスク** – Elastic Beanstalk は Amazon ECS と通信して、環境の各インスタンスでタスクを実行し、コンテナのデプロイを調整します。スケーラブルな環境では、Elastic Beanstalk はインスタンスがクラスターに追加されるたびに新しいタスクを開始します。
+ **Amazon ECS コンテナエージェント** – エージェントは環境のインスタンスの Docker コンテナで実行されます。エージェントは Amazon ECS サービスをポーリングし、タスクの実行を待ちます。
+ **Amazon ECS データボリューム** – `Dockerrun.aws.json` v2 に定義するボリュームに加えて、Elastic Beanstalk はログ収集を容易にするため、ボリューム定義をタスク定義に挿入します。

  Elastic Beanstalk はコンテナインスタンスにログボリュームを作成します。コンテナごとに 1 つ、場所は `/var/log/containers/{{containername}}` です。これらのボリュームの名前は `awseb-logs-{{containername}}` で、マウントするコンテナごとに指定されます。このマウント方法の詳細については、「[コンテナの定義形式](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun_format)」を参照してください。

Amazon ECS リソースの詳細については、「[Amazon Elastic Container Service デベロッパーガイド](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)」を参照してください。

## `Dockerrun.aws.json` v2 ファイル
<a name="create_deploy_docker_ecs_dockerrun"></a>

コンテナインスタンスには、`Dockerrun.aws.json` という名前の設定ファイルが必要です。*コンテナインスタンス*とは、Elastic Beanstalk 環境で ECS マネージド Docker を実行する Amazon EC2 インスタンスです。このファイルは Elastic Beanstalk に固有であり、単独で、または[ソースバンドル](applications-sourcebundle.md)でソースコードやコンテンツと組み合わせて使用して、Docker プラットフォーム上に環境を作成することができます。

**注記**  
`Dockerrun.aws.json` のバージョン 2 では、Amazon EC2 インスタンスごとに複数のコンテナのサポートが追加され、ECS マネージド Docker プラットフォームとの組み合わせでのみ使用できます。形式は、ECS によって管理されていない Docker プラットフォームブランチをサポートする他の設定ファイルバージョンとは大きく異なります。

 更新された形式とサンプルファイルの詳細については、「[`Dockerrun.aws.json` v2](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun)」を参照してください。

## Docker イメージ
<a name="create_deploy_docker_ecs_images"></a>

 Elastic Beanstalk の ECS マネージド Docker プラットフォームでは、Elastic Beanstalk 環境を作成する前に、イメージを事前に作成し、パブリックまたはプライベートのオンラインイメージリポジトリに保存する必要があります。

**注記**  
デプロイ時の `Dockerfile` を使用したカスタムイメージの構築は、Elastic Beanstalk 上の ECS マネージド Docker プラットフォームではサポートされていません。イメージを構築して、Elastic Beanstalk 環境を作成する前にオンラインレポジトリにデプロイします。

`Dockerrun.aws.json` v2 で、イメージを名前で指定します。

プライベートレポジトリを認証するように Elastic Beanstalk を設定するには、`Dockerrun.aws.json` v2 ファイルに `authentication` パラメータを含めます。

## 失敗したコンテナのデプロイ
<a name="create_deploy_docker_ecs_rollback"></a>

 Amazon ECS タスクが失敗した場合、Elastic Beanstalk 環境の 1 つ以上のコンテナが開始されません。Elastic Beanstalk は、Amazon ECS タスクが失敗したことで、マルチコンテナ環境をロールバックすることはありません。環境でコンテナの開始が失敗した場合は、Elastic Beanstalk コンソールから現在のバージョンまたは以前の機能するバージョンを再デプロイします。

**既存のバージョンをデプロイするには**

1. 環境のリージョンで Elastic Beanstalk コンソールを開きます。

1. アプリケーション名の右側の **アクション** をクリックし、**アプリケーションバージョンの表示** をクリックします。

1. アプリケーションのバージョンを選択し、**デプロイ** をクリックします。

## Elastic Beanstalk 用の ECS ベースの Docker プラットフォームの拡張
<a name="create_deploy_docker_ecs_extending_linux"></a>

Elastic Beanstalk には、独自のコマンド、スクリプト、ソフトウェア、および設定をアプリケーションのデプロイに適用できるようにする拡張機能が用意されています。*ECS AL2 および AL2023* プラットフォームブランチのデプロイワークフローは、他の Linux ベースのプラットフォームとは若干異なります。詳細については、「[Amazon Linux 2 以降で動作する ECS のインスタンスデプロイのワークフローAL 2 以降で動作する ECS のインスタンスデプロイのワークフロー](platforms-linux-extend.workflow.ecs-al2.md)」を参照してください。