Amazon ECS でタスクの起動方法の選択肢を教えてください

2023.12.13

困っていた内容

コンテナ環境として ECS を検討しています。
コンテナの実行方法としてはいくつか方法があるようですが、選択肢の概要について教えてください。

どんな方法があるの?

ECS でコンテナを実行する方法は大きく二つです。

  1. Amazon ECS サービスを使用する方法
  2. RunTask/StartTask API を使用する方法

二つ目の方法は、直接 API を実行する方法や EventBridge を経由した方法など、更に細分化されます。

Amazon ECS サービスを使用する方法

ECS サービスで指定した数(desiredCount)のタスクを自動的に起動、維持する方法です。

ウェブアプリケーションなど長時間実行するワークロード向けで、ELB や Auto Scaling とも連携します。

コンテナで問題が発生してタスクが停止した場合も、ECS サービスによって自動的に新しいタスクへ置き換えが行われます。(利用者が直接タスクの停止・起動指示等を行う必要はありません)

AWS 公式ドキュメントでは、サービススケジューラや ECS サービス、サービスタスクという用語が使用されます。

RunTask(StartTask)API を使用する方法

ECS の API を実行してタスクを起動する方法です。(AWS マネジメントコンソールからも起動できます)

バッチ処理など処理が終わると停止するワークロード向けで、他の AWS サービスを利用してスケジューリングも可能です。 ※例:EventBridge、AWS Batch、AWS Step Functions

API の実行に応じてタスクが起動されますが、エラー等でタスクが停止しても自動的に置き換えは行われません。

AWS 公式ドキュメントでは、スタンドアロンタスクやスケジュールされたタスク、カスタムスケジューラという用語が使用されます。

参考資料