1. ホーム
  2. 記事一覧
  3. ECSの基本を理解する(クラスター、サービス、タスク定義、タスク)

2024.08.01

ECSの基本を理解する(クラスター、サービス、タスク定義、タスク)

こちらの記事では、AWSのコンテナオーケストレーションサービスであるECS(Amazon Elastic Container Service)の基本、クラスター、サービス、タスク定義、タスクについて解説します。

ECS(Amazon Elastic Container Service)とは

Amazon Elastic Container Service

Amazon Elastic Container Serviceは、AWSが提供するフルマネージドのコンテナオーケストレーションサービスです。ECSを利用することで、Dockerコンテナのスケーリング、実行、停止、管理をより簡単に行うことができます。

ECSでは、「EC2」「Fargate」、AWS外のオンプレミス環境で実行されるコンテナ環境をECSで簡単に管理できる****Amazon ECS Anywhereの**3つの起動タイプをコンテナ実行環境としてサポートしています。

コンテナオーケストレーション

コンテナオーケストレーションは、複数のコンテナを自動で管理するためのプロセスやツールのことを指します。主な機能として、コンテナのデプロイメント(配置)、スケーリング(拡張・縮小)、ネットワーキング、ロードバランシングなどがあります。

そして、コンテナオーケストレーションを実現するために使用するのがコンテナオーケストレーションツールです。ECSをはじめ、代表的なコンテナオーケストレーションツールにはKubernetesやDocker Swarmなどが挙げられます。これらはオーケストレータ(**コントロールプレーン)**とも呼ばれます。

これらのツールを使うことで、管理者は複数のコンテナホストに対して一つ一つ手動でコマンドを実行する必要がなくなり、より効率的にコンテナを運用、管理することが可能になります。

逆に言えば、コンテナオーケストレーションツールを使用しないと複数のコンテナホストを手動で管理することになり、複数あるコンテナに対して一つずつコマンドを実行する必要が出てくるため、非効率かつオペレーションミスにもつながってしまいます

ECSを利用するメリットとは?

ECSはAWSが提供するフルマネージドのコンテナオーケストレーションサービスです。CodeBuildやCodePipeline、Systems Manager Parameter Storeといった様々なAWSのサービスとの連携はマネージドサービスが実行してくれるため、ECSは非常に扱いやすいサービスとされています。

また、ECSはリージョン内の複数のAZ(アベイラビリティーゾーン)をまたいでコンテナを実行することができるため、より可用性の高い運用が可能です。

このように、AWSの各サービスとの連携を簡単に実現しながら、複数のコンテナを高い可用性を保って実行できるのはECSの魅力の一つと言えます。

ECSの主な構成要素

ECSを利用する上で基本となる構成要素として、「クラスター」、「サービス」、「タスク定義」、「タスク」の4つがあります。これらの要素はECSを利用する際に必要な設定項目になるため、図を利用しながら解説していきます。

クラスター

AWS公式

クラスターとは、後述する「サービス」と「タスク」を実行する基盤のことです。図で示すと赤枠の部分に相当します。

実際にクラスターを作成する際には、以下の項目を設定していきます。

  • クラスター名
  • どのVPCとサブネットを使用するのか?
  • 利用するインフラの種類(Fargate、EC2インスタンス、オンプレミスの仮想マシンまたはサーバー)

尚、設定項目については新しいコンソールと旧コンソールで違いがあるため、実際に触れる際には注意が必要です。

サービス

AWS公式

サービスとは、クラスター内で実行するタスク(コンテナ群)を管理する役割を持っています。

サービスでは、どのタスク定義を使用して、どのECSクラスターを使用するのか?などを決めることができます。

そして、起動タイプとしてEC2を選択しコンテナを仮想サーバー上で動作させるのか、Fargateを選択してコンテナをサーバーレスで動作させるのかを設定することができます。

また、どのくらいのタスク数が必要なのか?を定義することができるため、必要なタスクの数を3とした場合、起動後は3つのタスク数を自動で維持、管理してくれます。これにより、万が一障害が発生してサービスが停止してしまった場合にも、指定したタスクを自動で再作成してくれるという利点があります。

タスク定義

AWS公式

タスク定義とは、どのようなコンテナを作成するのか?を定義したものです。タスク定義は一度作成すると設定内容を変更することはできないため、変更したい場合は新しいタスク定義を別で作成するか、リビジョンと呼ばれるバージョン単位で内容を上書きする必要があります。

実際の設定項目の一部は以下のとおりです。

設定要素内容
ファミリー名タスク定義の名前
コンテナ名起動するコンテナ名
イメージURI使用するコンテナイメージのURI
ポートマッピングでのポート番号使用したいポート番号の指定
環境変数の設定環境変数の内容を設定
ボリューム名コンテナへアタッチするボリューム
実行ロールの設定タスクがAWSサービスにAPIリクエストを行うために使用できるIAM ロール。
ネットワークモードの設定default、bridge、Host、awsvpc、None

このタスク定義で設定した内容をもとにして、タスクと呼ばれるコンテナ群は作成されます。

また、ポートマッピングで使用するポートマッピングのポート番号を指定しなかった場合、動的にポート番号が割り当てられます。

タスク

タスクとは、先述したタスク定義をもとにして起動したコンテナの集まりのことです。

一つのタスク内では複数のコンテナを起動することもできます。例えばNginxなどのWebサーバーと、Gunicornなどのアプリケーションサーバーを一つのタスク内で実行する、といったことも可能です。

タスクのどれかが障害などで停止したりした場合には、サービスで設定した必要なタスク数をもとに自動的に新しいタスクが起動します。これにより、サービス内の希望するタスク数を維持することができます。

まとめ

こちらの記事では、ECSにおける基本的な要素、(クラスター、サービス、タスク定義、タスク)について解説しました。

  • クラスターは「サービス」と「タスク」を実行する基盤のこと
  • サービスは、クラスター内で実行するタスク(コンテナ群)を管理する役割を持っている
  • タスク定義とは、どのようなコンテナを作成するのか?を定義したもの
  • タスクとは、タスク定義をもとにして起動したコンテナの集まりのこと

それぞれの要素について図を見ながらイメージしていただき、ECSの基本的な4つの要素について少しでも理解に繋がれば幸いです。

ECSには、ECS on EC2とFargateの2つがあります。そちらについても解説しているのでご覧ください。

https://envader.plus/article/441

ECSのデプロイメント戦略についてはこちらで解説しています。

https://envader.plus/article/442

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事