水島雄太のブログ

個人的かつ雑多なブログです。

ECSまとめ

ECSについて

ECSは AWSが提供する、kurbernetes・Swarmに似た、コンテナ管理サービスのうちの1つです。

普段開発環境でDockerを使用している方、kubernetes・SwarmなどでDocker Clusterを構築している方でも、ECS独自の用語などのため、混乱する方が一定数以上いると思います。

ここでは、そのような方を対象に*1、ECSの概要とECSで用いられる用語の概念について説明していきます。

前提として、dockerを使ったことがある人が対象です。

公式ドキュメント

http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html

なにはともあれ、公式ドキュメントをしっかり読みましょう。 ECSは日本語ドキュメントがしっかり用意されているので、効率の面から言ってもまずは日本語資料を読み切ってしまいましょう。

コンテナ

ECSで使われる コンテナ という用語は、Dockerで使われている コンテナ と同等の意味ですので、ここでは解説しません。

イメージ

ECSで使われる イメージ という用語は、Dockerで使われている イメージ と同等の意味ですので、ここでは解説しません。

タスク定義

普段使っている例で言うと、docker-compose.yml の記述に近い。 実際に、 ecs-cli では、 docker-compose.yml の形式で記述したタスク定義を、ecs-cli compose コマンドでdeployすることが出来る

タスク

実際の例で説明すると、docker-compose.yml で定義したタスク定義をインスタンス化したもの。 ECSクラスター上では、タスクを最小単位として、ECの実インスタンス上にタスクが配置される。

スケジューリング

上述のタスクはスケジューリングが出来るため、例えばバッチ処理は、スケジューラでタスクを定期実行することで実現できる。

クラスタ

タスクが実行される環境をまとめた概念。 実装上は、複数のEC2インスタンスをグループ化して、同じグループ内では共通インターフェースを通して協調できるようにしたものと言える。

コンテナエージェント

クラスター内のインスタンスでタスクのスーパーバイザーとして動作し、タスクの管理、Docker レジストリからDっockerImageのプル、ECSコンソールや ECS APIを介してのECSからの制御を受け付ける。

まとめ

  • ECSEC2 上で動作する
  • EC2 上では、 タスク のスーパーバイザーとして、 コンテナエージェント が動作している
  • タスク定義 をテンプレートとして、 タスク が生成され、 タスク を管理しているのが コンテナエージェントタスクコンテナエージェント を介して、 クラスター 内の他のタスクと協調動作をする

*1:実際は自分の理解の確認とメモという側面が大きいですが