あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

Amazon ECS(Elastic Container Service)について調べてみた

ECSを使っていこうと思ったけど、いろいろ覚えることがありそうだったのでまずは調べてみた。

ECSとは

コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできる、完全マネージド型のコンテナオーケストレーションサービス。ECS Anywhere を使用すると、Amazon ECS コンソールと AWS CLI から、オンプレミスのコンテナワークロードの管理ができる。




ECS起動タイプ

ECSでは下記2種類の起動タイプのコンテナ実行環境を提供している。

  • Fargate起動タイプ
  • EC2起動タイプ

Fargate起動タイプとは

Amazon ECSで使用できるテクノロジーであり、サーバーやAmazon EC2インスタンスクラスターを管理することなくコンテナを実行できる。


EC2起動タイプとは

EC2インスタンスにコンテナクラスタを設定してデプロイしコンテナを実行する。




ECSコンポーネント

ECSでは下記コンポーネントが動作し環境構築・維持を行っている。

  • クラスタ
  • コンテナ
  • イメージ
  • タスク定義
  • タスク
  • サービス
  • コンテナエージェント

クラスターとは

タスクまたはサービスの論理グループ。クラスターを使用して、アプリケーションを分離できる。

アプリケーションの単位かな。

コンテナとは

ソフトウェアアプリケーションの実行に必要なものをすべて保持するソフトウェア開発の単位。コードや、ランタイム、システムツール、システムライブラリなどが含まれる。

Dockerのコンテナと同じイメージ。

イメージとは

Dockerfileから構築されるコンテナのイメージ。コンテナに含まれるすべてのコンポーネントを指定するプレーンテキストファイル。これらのイメージは構築された後にダウンロード可能な場所であるレジストリに保存される。

DockerfileをECSではイメージという模様。

タスク定義とは

アプリケーションを形成する1つ以上のコンテナを記述するテキストファイル。JSON形式。最大10個のコンテナを記述することができる。

コンテナのリソースに関する設定ができる模様。CPU、メモリなど。ALBへの関連付けもここで行う。

タスクとは

タスク定義をインスタンス化したもの。

これはまんまですね。

サービスとは

ECSクラスタで必要な数のタスクを同時実行して維持できる機能。

Kubernetesのスケジューラーのようなものかな。

コンテナエージェントとは

ECSクラスター内の各コンテナインスタンス上で実行される。実行中のタスクとリソースのコンテナの使用率に関する情報をECSへ送信する。また、ECSからのリクエストを受信すると、タスクを開始および停止する。

エージェントが動いているんですね( ̄д ̄)フムフム



感想

EKSとの違いがよくわからなかったけど、おそらくECSはコンテナランタイム(Dockerなど)のマネージド化で、EKSはKubernetesのマネージド化という感じかな。次回以降使ってみて確認していきたいと思います。( ̄△ ̄)