Amazon Elastic Container Service とは
Amazon Elastic Container Service (Amazon ECS) は、コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできる、完全マネージド型のコンテナオーケストレーションサービスです。フルマネージドサービスである Amazon ECS には、AWS の設定と運用に関するベストプラクティスが組み込まれています。Amazon Elastic Container Registry や Docker などの AWS とサードパーティーツールの両方に統合されています。この統合により、チームは環境ではなくアプリケーションの構築に集中しやすくなります。コントロールプレーンの複雑な管理は必要なく、クラウドの AWS リージョン 間またはオンプレミスで、コンテナワークロードを実行およびスケーリングできます。
Amazon ECS の用語とコンポーネント
Amazon ECS には次の 3 つのレイヤーがあります。
-
容量 - コンテナが稼働するインフラストラクチャ
-
コントローラー - コンテナ上で実行されるアプリケーションをデプロイして管理します
-
プロビジョニング - スケジューラーと連携してアプリケーションやコンテナをデプロイおよび管理するために使用できるツール
Amazon のレイヤーは以下の図のようになります。
Amazon ECS キャパシティ
Amazon ECS キャパシティは、コンテナが稼働するインフラストラクチャです。以下は、容量オプションの概要です。
-
クラウド内 AWS の Amazon EC2 instances
インスタンスタイプ、インスタンス数を選択し、容量を管理します。
-
AWS クラウドでの (AWS Fargate) サーバーレス
Fargate はサーバーレスの従量制料金計算エンジンです。Fargate を使用すると、サーバーを管理したり、容量計画に対処したり、セキュリティのためにコンテナワークロードを分離したりする必要がなくなります。
-
オンプレミス仮想マシン (VM) またはサーバー
Amazon ECS Anywhere は、オンプレミスサーバーや仮想マシン (VM) などの外部インスタンスを Amazon ECS クラスターに登録するためのサポートを提供します。
キャパシティは次の AWS リソースのいずれかに配置できます。
-
アベイラビリティーゾーン
-
ローカルゾーン
-
Wavelength Zone
-
AWS リージョン
-
AWS Outposts
Amazon ECS コントローラ
Amazon ECS スケジューラは、アプリケーションを管理するソフトウェアです。
Amazon のプロビジョニング
Amazon ECS のプロビジョニングには複数のオプションがあります。
-
AWS Management Console — Amazon ECSリソースへのアクセスに使用するウェブインターフェイスを提供します。
-
AWS Command Line Interface (AWS CLI) — Amazon ECSを含む一連のさまざまな AWS サービス用のコマンドを提供します。Windows、Mac、Linux でサポートされています。詳細については、「AWS Command Line Interface
」を参照してください。 -
AWS SDK — 言語固有の API を提供し、接続の詳細の多くを処理します。これらには、署名の計算、リクエストの再試行処理、エラー処理などを含みます。詳細については、AWS SDK
を参照してください。 -
Copilot — Amazon ECS で本番稼働可能なコンテナ化されたアプリケーションを構築、リリース、運用するためのオープンソースツールをデベロッパーに提供します。この詳細については、GitHub ウェブサイトの Copilot
を参照してください。 -
AWS CDK - 使い慣れたプログラミング言語を使用して、クラウドアプリケーションリソースをモデル化およびプロビジョニングするために使用できるオープンソースのソフトウェア開発フレームワークを提供します。AWS CDK は、AWS CloudFormation を通じて安全かつ繰り返し可能な方法でリソースをプロビジョニングします。
アプリケーションのライフサイクル
次の図は、アプリケーションのライフサイクルと Amazon ECS コンポーネントとの連携を示しています。
アプリケーションをコンテナ上で実行できるように設計する必要があります。コンテナとは、ソフトウェアアプリケーションの実行に必要なものをすべて保持する、標準化されたソフトウェア開発の単位です。これには、関連するコード、ランタイム、システムツール、およびシステムライブラリが含まれます。コンテナは、イメージと呼ばれる読み取り専用テンプレートから作成されます。イメージは通常 Dockerfile から構築されます。Dockerfile は、コンテナを構築するための手順を含むプレーンテキストファイルです。これらのイメージは、Amazon ECR など、構築された後にダウンロード可能な場所であるレジストリに保存されます。
イメージを作成して保存した後、Amazon ECS のタスク定義を作成します。タスク定義はアプリケーションのブループリントです。これは、アプリケーションを形成するパラメータと 1 つ以上のコンテナを記述する JSON 形式のテキストファイルです。例えば、オペレーティングシステムのパラメータ、使用するコンテナ、アプリケーションで開くポート、タスクのコンテナで使用するデータボリュームなどの指定に使用できます。タスク定義で使用できる特定のパラメータは、お客様の特定のアプリケーションのニーズによって異なります。
タスク定義を定義したら、それをサービスまたはタスクとしてクラスターにデプロイします。クラスターは、クラスターに登録されているキャパシティインフラストラクチャ上で実行されるタスクまたはサービスを論理的にグループ化したものです。
タスクはクラスター内のタスク定義のインスタンス化です。スタンドアロンタスクを実行することもできますし、サービスの一部としてタスクを実行することもできます。Amazon ECS サービスを使用すると、Amazon ECS クラスターで必要な数のタスクを同時に実行して維持できます。仕組みとしては、タスクがいずれかの理由で失敗または停止した場合に、Amazon ECS サービススケジューラがタスク定義に基づいて別のインスタンスを起動することによって動作します。これは、それを置き換え、サービス内の必要な数のタスクを維持するために行われます。
コンテナエージェントは Amazon ECS クラスター内の各コンテナインスタンス上で実行されます。エージェントは、現在実行中のタスクとリソースのコンテナの使用率に関する情報を Amazon ECS に送信します。Amazon ECS からのリクエストを受信するたびに、タスクを開始および停止します。
タスクまたはサービスをデプロイしたら、次のいずれかのツールを使用してデプロイとアプリケーションを監視できます。
-
CloudWatch
-
Runtime Monitoring