Skip to content
Latchkey

Amazon ECSとは?AWSのコンテナオーケストレーション

Amazon ECS (Elastic Container Service) は、コンテナを実行しスケールするためのAWSネイティブのオーケストレーターで、あなたが管理するEC2インスタンス上か、サーバーレスのFargate上で動きます。

ECSは "コンテナイメージがある、これをスケールで確実に実行したい" というニーズへのAWSの答えです。computeキャパシティ全体にコンテナをスケジュールし、望ましい数のコピーを実行し続け、load balancerと統合し、rolling updatesを処理します。Kubernetesより導入がシンプルでありながら、なお本番グレードです。

ECSの中核概念

  • Task definition - コンテナ、イメージ、CPU、メモリを記述するblueprint。
  • Task - task definitionの実行中のインスタンス。
  • Service - 望ましい数のtasksを健全に、load balancerの背後に保つ。
  • Cluster - tasksが実行されるキャパシティの論理的なグループ化。

EC2対Fargateのlaunch type

EC2 launch typeでは、tasksをホストするインスタンスのフリートを管理します。Fargateでは、AWSがtaskごとにcomputeをプロビジョニングし、あなたはサーバーを一切見ません。Fargateは、nodeを管理しない利便性のために、いくらかのコストと制御をトレードオフします。

ECSがどう更新をデプロイするか

新しいtask definitionのリビジョンを登録してserviceを更新すると、ECSはrolling deploymentを実行します: 新しいtasksを起動し、health checksを待ち、それから古いものをドレインして停止します。blue-green rolloutのためにCodeDeployを組み込むこともできます。

networkingとload balancing

ECS serviceは通常、トラフィックを分配しhealth checksを実行するApplication Load Balancerの背後に配置されます。tasksはVPC内で独自のネットワークインターフェースを持つので、EC2と同じようにsecurity groupsとsubnetsを制御します。

CI/CDでの役割

pipelineがDockerイメージをbuildしてECRにpushし、そのイメージタグを指す新しいtask definitionを登録し、update-serviceを呼んでrolling deployをトリガーします。GitHub Actionsは公式のaws-actionsツールでこれを行い、OIDC role経由で認証します。CIを同じAWS regionのrunnerで実行すること (Latchkeyがそうするように) が、ECRへのpushとdeployを高速に保ちます。

重要なポイント

  • ECSは、task definitions、tasks、servicesを中心に構築されたAWSのコンテナオーケストレーターです。
  • 自己管理のEC2キャパシティ上、またはサーバーレスのFargate上で実行されます。
  • pipelineは、ECRにイメージをpushしてECS serviceを更新することでデプロイします。

関連ガイド