AWS ECSの基本概念
ECSには以下のような項目があります。
- ECS Service
- ECS Cluster
- ECS タスク定義
- ECS タスク
- ECR リポジトリ
実際にはECSを使うために、AWSの他サービスと併用することがほとんどですが、本記事ではECSを構成する要素とはなんなのかに焦点を当ててなるべく簡潔に説明していきます。
ECRは厳密にはECSのサービスではないかもしれませんが、ECSと密接に関係しているため含めています
ECS全体の関係図
大まかな理解として、
- クラスターの中にはサービス、タスクが含まれる
- サービスの中にはタスクが含まれる
上記のような関係性になっています。次の項目で各リソースの役割について解説します。
ECS Cluster
ECSを構成する要素の最大単位であり、タスク(コンテナ)やサービスを複数含める事ができます。
このクラスターがないとそもそもタスクを起動させる事ができないので、まず初めに作成する事になるかと思います。
タスクやサービスをグルーピングしたまとまりです。
RDSにもクラスターの概念がありますが、RDSの場合はクラスターを作成せずにインスタンス単体で作成することもできます。
ECSの場合はタスクを起動する際にクラスターが必ず必要になるのでそういったリソース毎の違いには注意が必要です。
ECS タスク
ECSを構成する要素の最小単位であり、タスク=コンテナです。
後述しますが、タスク定義に記載された内容で起動します。
タスク定義
どのような設定でタスクを起動するかをjson形式で記述した設計書です。
開放するポート番号、環境変数の指定等、様々な設定ができます。
ECS Service
タスクをいくつ起動するか、どのELBを指定するか、どのタスク定義を使用してタスクを起動させるか等の設定ができます。
筆者がECSを理解するためにイメージした事
これは完全に筆者のイメージでしかないですが、ECSの各種サービスがアマゾン等で荷物を注文する流れに似ているなと思いました。
-
まず購入者が、商品をカートに入れて注文します。
この時どんな商品を、いくつ注文するかを指定しますが、これがサービスに当たります。サービスでもいくつタスクを起動させるか、どのタスク定義からタスクを起動させるか等を選択できます。 -
商品が注文されたら、商品を入れる箱を用意します。これはクラスターです。
-
用意した箱に商品と、組み立てに必要な設計書を入れます。これはタスク、タスク定義です。
上記の流れは、実際にECSを作成する際の流れを考えるとおかしい点もあるので一例としてこんな考え方あるんだくらいに思っていただけますと幸いです。
ECS タスク起動までの流れ
サービスからタスクを起動する流れについては以下のとおりです。
- クラスターを作成する
- ECRリポジトリを作成し、コンテナの起動に使用するイメージを入れておく
- タスク定義を作成(ここでどのECRリポジトリのイメージを使用するかも記載します。)
- クラスター内にサービスを作成し、タスクの数や、どのタスク定義からタスクを起動させるか等を指定する
上記まで実行すれば、サービスで指定したタスクの数分タスクが起動します。
ここではあくまでECSに絞って記載していますが、実際にはサービスからタスクを起動させるにはELBを作成したり、SecurityGroup周りも設定する必要があります。
終わりに
正直、ECSにはじめて触れた際には用語の意味だったり概念的な理解がとてもしんどかったです。
実際に触れてみると、案外理解しやすかったりすると思いますのでぜひこの¥記事を読んだあとに手を動かしてみるのをおすすめします!筆者は以下のUdemyの講座でハンズオンしてみましたが解説も丁寧でわかりやすかったのでおすすめです。