Amazon ECS のアイコン

Amazon ECS

コンテナ化されたアプリケーションを簡単に実行・管理できるコンテナオーケストレーションサービス

何ができるか

Amazon ECS (Elastic Container Service) は、Docker コンテナを AWS 上で簡単に実行、停止、管理できるフルマネージドのコンテナオーケストレーションサービスです。コンテナの配置やスケーリング、ヘルスチェック、ロードバランシングなどを自動で行い、開発者はアプリケーションの開発に集中できます。EC2 インスタンス上で動かす方式と、AWS Fargate を使ってサーバーレスで動かす方式の 2 つから選べます。

どのような場面で使うか

マイクロサービスアーキテクチャの構築と運用、Web アプリケーションのコンテナ化と本番デプロイ、バッチ処理や定期ジョブのコンテナ実行、CI/CD パイプラインでのビルド・テスト環境の構築、レガシーアプリケーションのコンテナ移行など、コンテナを活用するあらゆる場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

大型の物流倉庫の管理システムに例えるとわかりやすいでしょう。荷物 (コンテナ) をどの棚 (サーバー) に置くか、壊れた荷物を新しいものに入れ替えるか、繁忙期に棚を増やすかといった判断を、すべて自動で行ってくれる仕組みです。倉庫の管理人を雇う代わりに、ECS が 24 時間体制で最適な配置を考えてくれます。

ECS とは

Amazon Elastic Container Service (ECS) は、AWS が提供するフルマネージドのコンテナオーケストレーションサービスです。Docker コンテナを使ったアプリケーションのデプロイ、管理、スケーリングを簡素化します。2014 年に発表され、AWS 独自のコンテナ管理サービスとして多くの企業に採用されています。Kubernetes のような複雑な設定を必要とせず、AWS の各種サービスとの深い統合が特徴です。

主な特徴

ECS の大きな特徴は、AWS エコシステムとのシームレスな統合です。Elastic Load Balancing によるトラフィック分散、CloudWatch によるモニタリング、IAM によるきめ細かなアクセス制御が標準で利用できます。起動タイプとして EC2 と Fargate の 2 種類を選択でき、EC2 起動タイプではインスタンスの種類やサイズを細かく制御でき、Fargate 起動タイプではサーバー管理が一切不要になります。タスク定義と呼ばれる JSON 形式の設定ファイルで、コンテナの CPU・メモリ・ネットワーク設定を宣言的に管理できます。

タスク定義とサービス

ECS では、アプリケーションの実行単位を「タスク」と呼びます。タスク定義には、使用する Docker イメージ、割り当てる CPU とメモリ、環境変数、ログ設定などを記述します。1 つのタスク定義に複数のコンテナを含めることもでき、サイドカーパターンでログ収集やプロキシを同居させる構成が一般的です。サービスはタスクの長期実行を管理する仕組みで、指定した数のタスクが常に稼働するよう自動的に維持します。タスクが異常終了した場合は自動で再起動され、ロードバランサーとの連携でヘルスチェックも行われます。

料金体系

ECS のコントロールプレーン自体には追加料金がかかりません。費用が発生するのは、コンテナを実行するインフラ部分です。EC2 起動タイプでは使用する EC2 インスタンスの料金が、Fargate 起動タイプでは割り当てた vCPU とメモリの使用時間に応じた料金がかかります。Fargate の場合、秒単位の課金で最低 1 分から利用でき、使った分だけ支払う従量課金制です。Fargate Spot を利用すれば、通常料金から最大 70% の割引で実行できます。

はじめかた

ECS を使い始めるには、AWS マネジメントコンソールで ECS ダッシュボードを開き、「クラスターの作成」から始めます。クラスターはタスクを実行する論理的なグループです。次にタスク定義を作成し、Docker イメージの URL、CPU・メモリの割り当て、ポートマッピングなどを設定します。Amazon ECR にプッシュした自前のイメージや、Docker Hub の公開イメージを指定できます。サービスを作成してタスク数を指定すれば、ECS が自動的にコンテナを起動・管理してくれます。

注意点

  • EC2 起動タイプではインスタンスの管理が必要なため、運用負荷を減らしたい場合は Fargate 起動タイプを検討すること
  • タスク定義のリビジョン管理を活用し、設定変更時にはロールバックできる体制を整えておくこと
  • コンテナのログは CloudWatch Logs に出力する設定を推奨。障害時の原因調査に不可欠である

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。