AWS ECSにおける重要用語

ECSにおける単語の説明

クラスタ

複数のEC2インスタンスで構成されている。ECSはクラスター全体でのCPUやメモリの使用量を把握するようにしている。

コンテナインスタンス

ECSでは、クラスター管理下にあるEC2インスタンスをコンテナインスタンスと呼ぶ。

タスク定義(タスクとは別)

アプリケーションがどのようなDockerコンテナで構成されるかをタスク定義に記述する。タスク定義された1つ1つがアプリケーションである。docker-compose.ymlに似ている。

アプリケーション全体の構成などを1つのタスク定義にまとめることもできるが、合理的ではない。タスク定義はそれ単位で、EC2インスタンス上で起動するからである。タスクには、Elastic searchのインデックス更新や支払い期限通知のメール送信などがあるが、それらも1つずつが別のEC2インスタンス上のコンテナで起動している。アプリケーションサーバーを起動する「bundle exec rails s」も1つのタスクとして扱われる。

タスク定義には、以下のような項目がある。

  • 利用するDockerイメージ
  • 開始時、コンテナ内部で使う環境変数
  • 開始のために実行するコマンド(bundle exec rails sなど)
  • コンテナでのCPUやメモリの使用量

これらを更新すると、履歴が残る。

タスクとサービス

タスク定義に書いたアプリケーションを起動させる手段として、タスクとサービスの2つがある。

  • タスク・・・バッチ処理や一時的な処理のために使う。大量のデータ更新のタスクとか。タスクの終了後、それが動いていたコンテナはkillされる。
  • サービス・・・長期的に動作する必要がある処理のために使う。サーバーを起動させるタスクとか。