AWS ECSのタスクとサービスの違いは何ですか?


114

タスク定義に基づいてタスクまたはサービスを実行できるようです。タスクとサービスの違いと類似点は何ですか?タスクを作成するときにサービスではなく「タスクグループ」を指定できるという手掛かりはありますか?タスクとサービスはタスク定義の階層的に等しいインスタンス化ですか、それともサービスはタスクで構成されていますか?

回答:


235

タスクの定義は、 1つの以上の集合体であるコンテナ構成。一部のタスクは1つのコンテナーのみを必要とする場合がありますが、他のタスクは2つ以上の潜在的にリンクされたコンテナーを同時に実行する必要がある場合があります。タスク定義では、使用するDockerイメージ、公開するポート、割り当てるCPUとメモリの量、ログの収集方法、環境変数の定義を指定できます。

A タスクは、それらがされている時点で、あなたは直接タスクを実行すると、それらが停止されるまで(タスク定義で定義されている)が起動コンテナ(s)は、作成されるか、または自分自身で終了され、自動的に置き換えられません。タスクを直接実行することは、おそらくCRONを介して実行された例として、短時間の実行ジョブに理想的です。

A サービスは、あなたが常にタスクのいくつかの数持っていることを保証するために使用されるすべての回で実行されているが。エラーが原因でタスクのコンテナーが終了するか、基になるEC2インスタンスが失敗して置き換えられた場合、ECSサービスが失敗したタスクを置き換えます。これが、使用するCPU、メモリ、およびネットワークポートの観点から、サービスに十分なリソースがあるようにクラスターを作成する理由です。私たちにとって、タスクが実行されている限り、タスクがどのインスタンスで実行されるかは重要ではありません。サービス構成はタスク定義を参照します。サービスは、タスクの作成を担当します

サービスは通常、Webサーバーなどの長時間実行されるアプリケーションに使用されます。たとえば、Node.JSを使用してWebサイトをオレゴン(us-west-2)に展開した場合、高可用性のために、3つのアベイラビリティーゾーン(AZ)にわたって少なくとも3つのタスクを実行するとします。1つが失敗した場合、別の2つがあり、失敗した1つが置き換えられます(それを自己回復として読み取ります)!)。これを行うには、サービスを作成します。クラスター内に6つのEC2インスタンスがあり、AZごとに2つある場合、サービスは、CPU、メモリ、ネットワークリソースも考慮しながら、可能な限りゾーン間でタスクを自動的に分散します。

更新:

これらのことを階層的に考えることが役立つかどうかはわかりません。

もう1つの非常に重要なポイントは、ロードバランサーを使用するようにサービスを構成できるため、サービスがタスクを作成するとき、つまり、タスク定義で定義されたコンテナーを起動するときに、サービスがコンテナーのEC2インスタンスをロードバランサーに自動的に登録することです。ロードバランサーを使用するようにタスクを構成することはできません。サービスのみを構成できます。


1
@talentedmrjonesありがとうございました!それでは、「実行時間の短いジョブにはタスクを使用し、実行時間の長いサービスにはサービスを使用する」のと同じくらい簡単でしょうか。「タスクとサービスは階層的に等しいタスク定義のインスタンス化ですか、それともサービスはタスクで構成されていますか」についてコメントできますか?
ボブ・ジョーンズ

わからないこと:タスクが作成されたときに環境変数の値を変更できるのに、サービスで実行できないように見える理由
Nikolay Klimchuk

1
@NikolayKlimchukサービスはタスクのみを管理します-envarsを定義して使用するのはタスク自体です。
最悪

「タスクグループ」とは
red888

@NikolayKlimchuk返信が遅くなってすみません。サービスはコンテナーのスケジュールに使用れ、タスクはコンテナーの定義に使用されます。これが、タスクを使用してenv変数を制御する理由です。
有能な

42

@talentedmrjonesが言葉で美しく説明しています。以下の画像は、それを簡単に視覚化するのに役立ちます:)

クラスター、サービス、EC2インスタンス、実行中のタスク


素敵な視覚化!:-)
sgsi

2
回答の閲覧者がAmazon ECSについて詳しく知りたい場合は、freecodecamp.org / news /…にアクセスしてください。美しく説明しました!
realPK

@realPKは非常に役立つページです。推奨事項に感謝します。
Christophe

2

タスク定義:

これは、実行するDockerコンテナーを説明するブループリントであり、アプリケーションを表します。これにはいくつかのタスクが含まれます。

タスク定義

サービス:

タスク定義のインスタンス。また、任意の時間に実行された1つのタスク定義、自動スケーリング、および負荷分散からの最小および最大タスクも定義します。

ECSコンテナインスタンス:

これは、DockerとECS Container Agentが実行されているEC2インスタンスです。エージェントはECSとインスタンス間の通信を処理し、実行中のコンテナーのステータスを提供し、実行中の新しいコンテナーを管理します。

関係:

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.