メニュー
Amazon Elastic Container Service
開発者ガイド (API Version 2014-11-13)

Amazon Elastic Container Service とは

Amazon Elastic Container Service (Amazon ECS) は、クラスターで Docker コンテナを簡単に実行、停止、管理できる非常にスケーラブルで高速なコンテナ管理サービスです。Amazon ECS が管理するサーバーレスインフラストラクチャにクラスターをホストするには、Fargate 起動タイプを使用してサービスまたはタスクを起動します。また、EC2 起動タイプを使用して、現在管理している Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのクラスターにタスクをホストすることで、さらに強力な統制力を得ることができます。起動タイプの詳細については、「Amazon ECS 起動タイプ」を参照してください。

Amazon ECS を使用すると、シンプルな API コールでコンテナベースのアプリケーションを起動および停止したり、一元サービスからクラスターの状態を取得したり、多くの使い慣れた Amazon EC2 機能にアクセスしたりできます。

Amazon ECS を使用して、リソースの需要、分離ポリシー、可用性要件に基づいて、クラスター間でコンテナの配置をスケジュールできます。Amazon ECS があれば、独自のクラスター管理システムや設定管理システムを運用する必要も、管理インフラストラクチャのスケーリングを心配する必要もなくなります。

Amazon ECS は、一貫したデプロイおよび構築機能の作成、バッチおよび抽出、変換、ロード (ETL) ワークロードの管理とスケーリング、マイクロサービスモデルでの洗練されたアプリケーションアーキテクチャの構築に使用できます。Amazon ECS のユースケースおよびシナリオの詳細については、コンテナのユースケースを参照してください。

Amazon ECS の機能

Amazon ECS は、リージョン内の複数のアベイラビリティーゾーン間で可用性の高い方法でアプリケーションコンテナを実行する方法を簡易化するリージョナルサービスです。新規または既存の VPC 内に Amazon ECS クラスターを作成できます。クラスターが稼働したら、クラスター全体で実行する Docker コンテナのイメージを指定するタスク定義とサービスを定義できます。コンテナのイメージは、コンテナレジストリに保存され引き出されます。これは AWS インフラストラクチャの内にある場合も外にある場合もあります。

以下の図は、Fargate 起動タイプを使用する Amazon ECS 環境のアーキテクチャを示しています。

次のセクションでは、Amazon ECS アーキテクチャの個別の要素を詳しく見ていきます。

コンテナとイメージ

Amazon ECS にアプリケーションをデプロイするには、アプリケーションコンポーネントがコンテナで実行されるように設計する必要あります。Docker コンテナは標準化されたソフトウェア開発用のユニットであり、コード、ランタイム、システムツール、システムライブラリなど、ソフトウェアアプリケーションの実行に必要なものがすべて含まれています。コンテナは、イメージと呼ばれる読み取り専用テンプレートから作成されます。

イメージは通常、Dockerfile から構築されます。これは、コンテナに含まれるすべてのコンポーネントを指定するプレーンテキストファイルです。これらのイメージはその後レジストリに保存され、そこからクラスターにダウンロードして実行できます。コンテナ技術の詳細については、「Amazon ECS における Docker の基本」を参照してください。

注記

Fargate 起動タイプは、Amazon ECR がホストするコンテナイメージ、または Docker Hub でパブリックにホストされているコンテナイメージの使用のみをサポートします。プライベートリポジトリは、現在 EC2 起動タイプを使用する場合にのみサポートされます。

タスク定義

Amazon ECS でアプリケーションを実行する準備をするには、タスク定義を作成する必要があります。タスク定義とは、アプリケーションを構成する 1 つ以上 (最大 10 個) のコンテナを記述する JSON 形式のテキストファイルです。アプリケーションの設計図と考えることができます。タスク定義はアプリケーションのさまざまなパラメーターを指定します。タスク定義パラメータには、使用するコンテナ、使用する起動タイプ、アプリケーションのコンテナインスタンスで開くポート、タスクのコンテナが使用するデータボリュームなどがあります。タスク定義で利用できる具体的なパラメーターは、使用する起動タイプに応じて変化します。タスク定義の作成方法については、「Amazon ECS タスク定義」を参照してください。

以下に、NGINX ウェブサーバーを実行する単一コンテナを含む、Fargate 起動タイプを使用したシンプルなタスク定義の例を示します。タスク定義で複数のコンテナを使用する拡張例については、「タスク定義の例」を参照してください。

{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "100", "cpu": "99", }

タスクとスケジューリング

タスクはクラスター内のタスク定義のインスタンス化です。Amazon ECS でアプリケーションのタスク定義を作成した後、クラスターで実行するタスクの数を指定できます。

Amazon ECS タスクスケジューラは、クラスターへのタスク配置を担当します。いくつかの異なるスケジュールオプションを使用できます。たとえば、指定された数のタスクを同時に実行および保持するサービスを定義できます。使用できるさまざまなスケジューリングオプションの詳細については、「Amazon ECS タスクのスケジューリング」を参照してください。

クラスター

Amazon ECS を使用してタスクを実行する場合、リソースの論理グループ化であるクラスターにタスクを配置します。クラスター内のタスクで Fargate 起動タイプを使用する場合、Amazon ECS がクラスターリソースを管理します。EC2 起動タイプを使用する場合、クラスターは、ユーザー自身が管理するコンテナインスタンスのグループになります。Amazon ECS は指定されたレジストリからコンテナイメージをダウンロードし、そのイメージをクラスター内で実行します。

クラスターの作成の詳細については、「Amazon ECS クラスター」を参照してください。EC2 起動タイプを使用している場合のコンテナインスタンス作成の詳細については、「Amazon ECS コンテナインスタンス」を参照してください。

コンテナエージェント

コンテナエージェントは、Amazon ECS クラスター内の各インフラストラクチャリソース上で実行されます。リソースの現在実行中のタスクおよびリソース使用状況に関する情報を Amazon ECS に送信し、Amazon ECS からリクエストを受信したときはいつでもタスクを開始および停止します。詳細については、「Amazon ECS コンテナエージェント」を参照してください。

このページの内容: