ECSとは
公式ドキュメントより
Amazon ECS は、フルマネージドコンテナオーケストレーションサービスであり、コンテナ化されたアプリケーションを簡単にデプロイ、管理、およびスケーリングできます。
んー、いまいちわからん。
色々調べてみると、
Dockerコンテナサービス、AWS上で稼働させるDockerをAmazon ECSが管理してくれるようですね。
Dockerコンテナって?
このイメージですね。下記より引用。
https://cn.teldevice.co.jp/column/10509/
Dockerコンテナを理解するには、従来の仮想化を理解する必要があります。
ここは飛ばします。
ECSの全体的な構成要素
クラスター
Amazon ECSクラスターは、タスクまたはサービスの論理グループです。クラスターを使用して、アプリケーションを分離できます。
ECSの骨組みみたいなもので、タスクを配置するEC2インスタンス群になります。
ECSクラスターの上に後述する「EC2インスタンス」を起動した上で「タスク定義」を元に作成される「サービス」から「タスク(コンテナ)」をクラスター内のインスタンスにデプロイする事が出来ます。
タスクの定義
タスク定義は、アプリケーションを形成する 1 つ以上のコンテナを記述するテキストファイルです。JSON 形式にあります。最大 10 個のコンテナを記述するために使用できます。タスク定義はアプリケーションのブループリントとして機能します。それは、アプリケーションのさまざまなパラメータを指定します。たとえば、オペレーティングシステムのパラメータ、使用するコンテナ、アプリケーションで開くポート、タスクのコンテナで使用するデータボリュームなどの指定に使用できます。タスク定義で使用できる特定のパラメータは、お客様の特定のアプリケーションのニーズによって異なります。
どうコンテナを実行するかの情報であり、その定義が書かれたものです。
docker-compose.ymlがタスク定義にあたります。
タスク
タスクはクラスター内のタスク定義のインスタンス化です。Amazon ECS でアプリケーションのタスク定義を作成後、クラスターで実行するタスクの数を指定できます。スタンドアロンタスクを実行することもできますし、サービスの一部としてタスクを実行することもできます。
ECSにおけるコンテナに相当します。
タスクの定義の情報から起動させたコンテナの実行単位です。
サービス
Amazon ECS サービスを使用すると、Amazon ECS クラスターで必要な数のタスクを同時に実行して維持できます。仕組みとしては、タスクがいずれかの理由で失敗または停止した場合に、Amazon ECS サービススケジューラがタスク定義に基づいて別のインスタンスを起動することによって動作します。これは、それを置き換え、サービス内の必要な数のタスクを維持するために行われます。
- タスク定義の選択
- クラスターの選択
- タスクの数
- コンテナとELBの紐付け
などを設定することができます。
ECR
フルマネージドなDockerコンテナレジストリサービス
まとめ
ECSを作成する際の手順を整理
- クラスターの作成
- ここでECSの骨組みを作成
- タスクの定義
- ここでどのようにタスクを実行するか、ロールやタスクサイズを設定
- コンテナの定義もここで設定する
- イメージやポート、環境変数などの設定
- サービスの設定
- タスクの数やコンテナとのELBの紐付けなどを行う
ECSは概念を理解するのが難しいですが、今回で少し理解が深まりました。