Amazon Elastic Container Service とは - Amazon Elastic Container Service

Amazon Elastic Container Service とは

Amazon Elastic Container Service (Amazon ECS) は、クラスターでコンテナを簡単に実行、停止、管理できる非常にスケーラブルで高速なコンテナ管理サービスです。コンテナは、個々のタスクやサービス内のタスクを実行するために使用するタスク定義で定義されます。このコンテキストでは、サービスは、クラスター内で指定された数のタスクを同時に実行および維持できる設定です。タスクとサービスは、AWS Fargate で管理されているサーバーレスインフラストラクチャで実行できます。または、インフラストラクチャをより詳細に制御するために、管理する Amazon EC2 インスタンスのクラスターでタスクとサービスを実行できます。

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

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

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

AWS コンテナサービスチームは、GitHub でパブリックロードマップを維持しています。ロードマップには、チームが取り組んでいる内容に関する情報が含まれており、AWS のお客様が直接フィードバックを提供することができます。詳細については、AWS Containers Roadmap を参照してください。

Amazon ECS の機能

Amazon ECS は、リージョン内の複数のアベイラビリティーゾーン間で可用性の高い方法でコンテナを実行する方法を簡易化するリージョナルサービスです。新規または既存の VPC 内に Amazon ECS クラスターを作成できます。クラスターが稼働したら、クラスター全体で実行するコンテナイメージを指定するタスク定義を作成できます。タスク定義は、タスクの実行またはサービスの作成に使用されます。コンテナイメージは、コンテナレジストリに格納され、Amazon Elastic Container Registry などのコンテナレジストリからプルされます。

次の図は、AWS Fargate で実行される Amazon ECS 環境のアーキテクチャを示します。


                Fargate 起動タイプを使用する Amazon ECS 環境のアーキテクチャを示す図。

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

コンテナとイメージ

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

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


                    Amazon ECS 環境内での Docker イメージの作成と登録を示す図。

タスク定義

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": "512", "cpu": "256", }

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

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

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


                    Fargate 起動タイプを使用する Amazon ECS 環境内でのタスクスケジューリングと配置を示す図。

クラスター

Amazon ECS クラスターは、タスクまたはサービスの論理グループです。1 つ以上の Amazon EC2 インスタンス (コンテナインスタンスとも呼ばれます) をクラスターに登録して、それらのインスタンスでタスクを実行できます。または、Fargate が提供するサーバレスインフラストラクチャを使用してタスクを実行することもできます。タスクが Fargate で実行されると、クラスターリソースは Fargate でも管理されます。

Amazon ECS を初めて使用すると、デフォルトのクラスターが作成されます。アカウントに追加のクラスターを作成して、リソースを分離することができます。

クラスターの作成の詳細については、「Amazon ECS クラスター」を参照してください。コンテナインスタンスの起動とクラスターへの登録の詳細については、「Amazon ECS コンテナインスタンス」を参照してください。

コンテナエージェント

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


                    Amazon ECS 環境内のコンテナエージェントタスクを示す図。

Amazon ECS の開始方法

Amazon ECS を使用する際に利用できるデベロッパーツールについては、「Amazon ECS デベロッパー用ツールの概要」を参照してください。

初めて Amazon ECS を使用する場合、Amazon ECS の AWS Management Console は、手順を追ってウェブサーバーのタスク定義を定義し、サービスを設定して最初の Fargate タスクを起動する初回実行ウィザードを提供します。Amazon ECS の使用経験がほとんどまたはまったくない場合は、初回実行ウィザードを使用することを強くお勧めします。詳細については、Amazon ECS の開始方法 を参照してください。

あるいは、AWS Command Line Interface (AWS CLI) をインストールして Amazon ECS を使用できます。詳細については、「Amazon ECS でのセットアップ」を参照してください。

Amazon ECS と併せて使用できる AWS サービスは次のとおりです。

AWS Identity and Access Management

IAM (Identity and Access Management) は、AWS リソースへのアクセスをセキュアに制御するためのアクセス管理サービスです。IAM により、誰を認証 (サインイン)し、誰にリソースに対して特定のアクションを表示または実行することを承認 (アクセス許可を付与するか) を制御できます。Amazon ECS では、IAM ロールを使用したコンテナインスタンスレベルでのアクセス制御、および IAM タスクロールを使用したタスクレベルでのアクセス制御に IAM を使用できます。詳細については、Amazon Elastic Container Service の Identity and Access Management を参照してください。

Amazon EC2 Auto Scaling

Auto Scaling は、ユーザー定義のポリシー、ヘルスステータスチェック、およびスケジュールに基づいて、タスクの自動的なスケールアウトやスケールインを可能にするサービスです。Auto Scaling では、サービス内の Fargate タスクを使用して、メトリクスの数に応じてスケールインしたり、EC2 タスクを使用して、クラスター内のコンテナインスタンスをスケーリングできます。詳細については、「サービスのオートスケーリング」を参照してください。

Elastic Load Balancing

Elastic Load Balancing サービスは、アプリケーションに着信するトラフィックを Amazon ECS サービスのタスクに自動的に分散します。これはアプリケーションの耐障害性の向上を可能にし、アプリケーショントラフィックの分散に必要な負荷分散能力をシームレスに提供します。Elastic Load Balancing を使用してクラスター内のサービス間でトラフィックを調整するエンドポイントを作成できます。詳細については、「サービスの負荷分散」を参照してください。

Amazon Elastic Container Registry

Amazon ECR は、安全性と信頼性に優れたスケーラブルなマネージド AWS Docker レジストリサービスです。Amazon ECR では、IAM を使用してプライベート Docker リポジトリにリソースベースのアクセス権限が付与されるため、特定のユーザーまたはタスクからリポジトリとイメージにアクセスできるようになります。開発者は、Docker CLI を使用してイメージをプッシュ、プル、および管理できます。詳細については、Amazon Elastic Container Registry ユーザーガイド を参照してください。

AWS CloudFormation

AWS CloudFormation は、デベロッパーやシステム管理者が、関連する AWS リソースのコレクションを容易に作成/管理できるようにします。具体的には、リソースのプロビジョニングと更新をより整然として予測できるようにします。AWS CloudFormation スクリプトのエンティティとしてクラスター、タスク定義、サービスを定義できます。詳細については、AWS CloudFormation テンプレートリファレンス を参照してください。

料金

Amazon ECS の料金は、コンテナ化されたワークロードをホストするために AWS Fargate または Amazon EC2 インフラストラクチャを使用しているかどうかによって異なります。AWS Outposts で Amazon ECS を使用する場合、料金は Amazon EC2 を使用する場合と同じモデルに従います。詳細については、「Amazon ECS 料金表」を参照してください。

Amazon ECS と Fargate はまた、AWS 使用量に応じて大幅なコスト削減をもたらす Savings Plans も提供します。詳細については、Savings Plans ユーザーガイドを参照してください。

請求を表示するには、AWS Billing and Cost Management コンソール請求およびコスト管理ダッシュボードに移動します。請求書には、料金の明細が記載された使用状況レポートへのリンクが記載されています。AWS アカウント請求の詳細については、「AWS Account Billing」を参照してください。

AWS の請求、アカウント、イベントについてご質問がある場合は、AWS サポートにお問い合わせください

AWS 環境のコスト、セキュリティ、およびパフォーマンスを最適化できるサービスである Trusted Advisor の概要については、「AWS Trusted Advisor」を参照してください。