Amazon EC2 Container Service (ECS) を使用すると、Amazon EC2 インスタンスのクラスター全体に Docker 対応アプリケーションを簡単に実行し、管理できます。コンテナとしてローカルでパッケージングされたアプリケーションは、Amazon ECS によって管理されるコンテナと同様にデプロイし、実行できます。Amazon EC2 では、お客様が独自のクラスター管理インフラストラクチャをインストール、運用、およびスケールする必要はありません。また、Docker 対応アプリケーションをリソースニーズや可用性要件に基づいてクラスター全体でスケジューリングできます。Amazon EC2 では、数百のインスタンス全体で 1 個から数千個までコンテナを拡張できます。この際、アプリケーションの実行方法がより複雑になることはありません。アプリケーション、バッチジョブ、マイクロサービスなどをすべて実行できます。Amazon ECS では、インフラストラクチャの複雑さがすべて解消されるため、お客様はコンテナ化アプリケーションの設計、作成、実行に集中できます。

Amazon ECS を使用すると、Docker コンテナの作成や終了から、詳細なクラスターステータス情報の確認まで、クラスターを完全に視覚化、管理できます。お客様独自のコンテナスケジューラーを統合して使用したり、EC2 Container Service を既存のソフトウェア配信プロセス(継続的統合/配信システムなど)に接続したりできます。

AWS を無料でお試しください

まずは無料で始める »
またはコンソールにサインイン

12 か月間の AWS 無料利用枠と、24 時間年中無休のカスタマーサービスやサポートフォーラムなどの AWS の基本的なサポート機能を利用できます。

AWS アカウント作成の流れはこちら »

日本担当チームへお問い合わせ »
AmazonEC2ContainerService_ProductDetail

Amazon EC2 Container Service は Docker をサポートしており、Amazon EC2 インスタンスのクラスター全体で Docker コンテナを実行、管理できます。Amazon ECS が管理するクラスターの各インスタンスは Docker デーモンを実行します。そのため、コンテナとしてローカルでパッケージングしたアプリケーションはすべて、設定を変更しなくても Amazon ECS でデプロイおよび実行できます。

独自のコンテナ管理インフラストラクチャを管理する場合、通常、クラスター管理ソフトウェア、設定管理システム、モニタリングソリューションのインストール、運用、およびスケーリングが必要となります。これらのシステムの可用性とスケーラビリティを構築および管理するのは簡単ではありません。Amazon EC2 Container Service では、コンテナ管理の複雑さが解消されます。Amazon ECS ではコンテナインスタンスのクラスターを起動し、実行するタスクを指定するだけで、Amazon ECS がすべてのクラスター管理をお客様に代わって処理します。

Amazon EC2 Container Service を使用すると、タスク定義と呼ばれる宣言型の JSON テンプレートを使用してタスクを定義できます。タスク定義では、Docker のリポジトリとイメージ、メモリと CPU の要件、共有データボリューム、コンテナ同士のリンク方法といった、タスクに必要なコンテナを 1 つ以上指定できます。サービスに登録できる単一のタスク定義ファイルから必要な数だけタスクを起動できます。また、タスク定義ファイルを使用すると、アプリケーション仕様のバージョン管理を行うこともできます。

Amazon EC2 Container Service では、簡単な一連の API でサービスを統合および拡張できます。この API でクラスターの作成および削除、タスクの登録および登録解除、Docker コンテナの起動および終了、クラスターおよびクラスター内インスタンスの詳細なステータス情報の取得が可能です。Amazon ECS クラスターのプロビジョニング、タスク定義の登録、コンテナのスケジューリングにも AWS CloudFormation を使用することができます。

Amazon EC2 Container Service では、リソースニーズ(CPU、RAM など)と可用性要件に基づいてクラスター全体にコンテナを配置するスケジューラーを備えています。使用可能なスケジューラーを使用して、実行時間の長いアプリケーションとサービス、およびバッチジョブもスケジュールすることができます。また、Amazon ECS API によりクラスターの状態に関する完全な情報を取得できるようになり、独自のスケジューラーを記述したり、既存のサードパーティのスケジューラー(Marathon など)を統合したりすることもできます。Amazon ECS は共有されている状態のオプティミスティック同時実行システムで、すべてのスケジューラーにクラスターの詳細な状態を示します。お客様は、Amazon ECS API を使用して、独自のスケジューラーの開発、またはサードパーティのスケジューラーの統合を行い、クラスターの状態に関する完全な情報を取得したり、適切な場所にコンテナを配置したりできます。

コンテナの自動復旧
Amazon ECS サービススケジューラーでは、異常な状態のコンテナが自動的に復旧され、アプリケーションをサポートするのに必要な数のコンテナを確実に使用できます。

コンテナのロードバランシング
Amazon ECS は Elastic Load Balancing (ELB) と統合されているため、トラフィックをコンテナ全体に分散できます。タスク定義と使用する ELB を指定すると、Amazon ECS サービススケジューラーにより、コンテナが ELB に自動的に追加されたり、ELB から自動的に削除されたりします。

コンテナのデプロイメント
Amazon ECS を使用すると、コンテナを新しいバージョンに更新できます。アプリケーションのタスク定義を新しいバージョンに更新してアップロードすると、Amazon ECS スケジューラーにより、更新されたイメージを使用して新しいコンテナが自動的に開始され、前のバージョンを実行しているコンテナは自動的に停止します。Amazon ECS は、関連付けられた ELB に対して、自動的にコンテナの登録と登録解除を行います。

Amazon EC2 Container Service CLI (Amazon ECS CLI) を使用すれば、ローカルでの開発作業を簡略化でき、Amazon ECS クラスターおよびその関連リソース (EC2 インスタンスなど) の設定も簡単になります。Amazon ECS CLI では、マルチコンテナアプリケーションを定義し、運用するためのオープンソースツールである Docker Compose がサポートされています。開発用マシンでマルチコンテナアプリケーション定義に使用されたものと同じ Compose 定義を、実稼働環境にも適用できます。Amazon ECS CLI はオープンソースです。こちらからダウンロードできます。

Amazon ECS はお客様のコンテナおよびクラスターにモニタリング機能を提供いたします。Amazon CloudWatch による、タスク定義、サービスまたはクラスターごとのグループで、実行タスクの CPU とメモリ使用の平均値と合計量をモニタリングできます。コンテナやクラスターのスケールを拡張または縮小する際に、CloudWatch アラームを設定して警告することができます。

お客様は、すべての Amazon ECS API 呼び出しを記録し、そのログファイルを AWS CloudTrail を使用して自分に配信することができます。記録される情報には、API 呼び出し元の ID、API 呼び出しの時間、API 呼び出し元のソース IP アドレス、リクエストのパラメータ、および Amazon ECS から返された応答の要素が含まれます。CloudTrail を使用すると、Amazon ECS マネジメントコンソール、AWS SDK、AWS CLI を使用した API の呼び出し履歴を取得できます。この履歴により、セキュリティの分析、リソース変更の追跡、およびコンプライアンスの監査を行うことができます。

Amazon EC2 Container Service は任意のサードパーティ製またはアクセス可能なプライベートの Docker レジストリ、またはホストされた Docker イメージリポジトリである Docker Hub と合わせて使用できます。お客様がタスク定義でリポジトリを指定するだけで、Amazon ECS はアプリケーションに最適なイメージを取得します。