AWS ECSとは? ECSの概念を図解で整理

はじめに

AWS(Amaon Web Service)には、ECS(Elastic Container Service)というコンテナサービスがあります。

AWS ECSは、起動タイプが2種類あり、複数の要素から構成されているため、初学者の方の場合、各構成要素の役割を理解するのに時間がかかってしまうケースがあります。

この記事では、初学者の方がECSの構成できるようECSの概念を解説します。


AWS ECSとは

AWS上で複数のコンテナの実行、停止、管理をすることできるサービス (コンテナオーケストレーションサービス)です。

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

ECSは、KubenetesというGoogleが設計したOSSのAWS版と考えていただくとイメージしやすいかと思います。

https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/


ECSの種類

ECSはEC2とFargateの2種類の起動タイプが用意されています。

EC2

起動タイプEC2はAWS EC2インスタンス上で起動します。

Fargateより価格は安いですが、ホストOSやDocker Engineなどへのアップデートなどはユーザーが自分で実施する必要があります。

Fargate

起動タイプFargateは、コンテナを実行するホストの管理をAWS側で管理してくれるため、EC2より価格が高額になる反面、 ホストOSのアップデートなどはAWS側で実施され、ユーザー側実施する必要がなくなります。


ECSの構成要素

ECSはタスク、サービス、クラスターという3要素から構成されています。

タスク

タスクはタスク定義と呼ばれる設定内容に基づいてECS上でコンテナを起動する役割を担います。

タスク定義は起動タイプ、CPU、メモリ、イメージのURL、ネットワーク設定、環境変数などのコンテナの起動内容を定義したものです。


サービス

サービスはECS上で起動するタスクを管理する役割を担います。
具体的にはどのタスクにどのタスク定義を使用するかを定義したり、設定したタスク数より起動したタスク数が少なくなった場合に自動的にタスクを起動させることができます。

クラスター

クラスターはサービスや、タスクを実行する基盤で、サービスやタスクをグループ化する役割を担います。
クラスターを開発環境用クラスター、本番環境用クラスターの2種類を作成することで、サービスやタスクも開発環境用と本番環境用で論理的に分けることができます。


まとめ

この記事ではECSの構成要素について紹介しました。

  • ECSはAWS上で複数のコンテナの実行、停止、管理をすることできるコンテナオーケストレーションサービス

  • ECSはEC2とFargateの2種類の起動タイプがある

    • 起動タイプEC2の場合、価格は安いがホストOSなどの管理はユーザーがする必要がある
    • 起動タイプFargateの場合、価格が高額になる反面、ホストOSの管理はAWS側で実施してくれる
  • ECSはタスク、サービス、クラスターという3要素から構成される

    • タスク : タスク定義の内容に基づいてECS上でコンテナを起動する役割
      • タスク定義 : コンテナの起動内容を定義したもの(起動タイプ、CPU、メモリ、イメージのURL、ネットワーク設定、環境変数など)
    • サービス : ECS上で起動するタスクを管理する(起動させるタスクの数や、使用するタスク定義を定義する)
    • クラスター : サービスや、タスクを実行する基盤で、サービスや、タスクをグループ化する