Pocket Bundle シリーズ : Amazon ECS ~ AWS と深く統合されたフルマネージドなコンテナ基盤
2026-10-05 | Author : 米倉 裕基 (監修 : 伊勢田 氷琴、三浦 晟太郎)
Pocket Bundle シリーズとは ?
AWS サービスの要点を「ポケットに入れて持ち歩ける」コンパクトさで解説するシリーズです。図解とポイント解説を中心に、短時間で要点を把握できる構成になっています。基礎概念から実践的な設計知識まで、現場で役立つ情報を凝縮しています。
Amazon ECS とは
Amazon Elastic Container Service (Amazon ECS) は、コンテナ化されたアプリケーションのデプロイ・管理・スケーリングを担う、フルマネージドなコンテナオーケストレーションサービスです。
コンテナが 1 個なら docker run で足ります。しかし本番環境では、複数ホストへの配置、異常終了したコンテナの自動再起動、負荷に応じた台数の増減、新バージョンへの安全な切り替えが必要です。こうしたコンテナの外側にある仕事を引き受けるのがオーケストレーターです。ECS ではその管理を担うコントロールプレーンを AWS 自身が運用するため、管理すべきオーケストレーターそのものが利用者側に存在しません。
ECS は 3 つのレイヤーで整理できます。コンテナが実際に動く「キャパシティ」、アプリケーションのデプロイと維持を司る「コントローラー (スケジューラ)」、そして操作の入り口となる「プロビジョニング」(AWS マネジメントコンソール・AWS CLI・SDK・AWS CDK)です。
なお、Fargate と EC2 起動タイプでは、オーケストレーション機能自体に追加料金はありません。マネージドインスタンスには別途管理料金があります。詳細は後述の「ECS の料金体系」で扱います。
詳しくは、公式ドキュメントの「Amazon Elastic Container Service とは」をご覧ください。
builders.flash メールメンバー登録
builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。
主な特徴
ECS の特徴は図の 3 点に集約されます。それぞれが実務で何を意味するかを順に説明します。
3 つの特徴
フルマネージド
図にあるコントロールプレーンの管理が不要という点は、オーケストレーターのバージョンアップ作業が存在しないことを意味します。コントロールプレーンには利用者が追随すべきバージョンという概念がありません。可用性の確保もスケーリングも AWS 側の責任で行われます。新機能は API に追加される形で提供されるため、基盤を更新してからでないと新機能が使えない、という制約も生じません。EC2 起動タイプで残るエージェントや AMI の更新も、Fargate とマネージドインスタンスでは AWS 側の責任になります。
サーバーレス実行
AWS Fargate を使うと、サーバーの管理もキャパシティ計画も不要になります。これを支えるのが分離の設計で、各 Fargate タスクは専用の分離境界を持ち、カーネル・CPU・メモリ・Elastic Network Interface を他のタスクと共有しません。ホストを共有しないため同居するコンテナの影響を考える必要がなく、セキュリティ隔離の考慮とキャパシティ管理の両方が不要になります。
AWS との深い統合
AWS IAM・Application Load Balancer (ALB)・Amazon CloudWatch などと設定だけで連携できます。タスク (コンテナの実行単位) ごとに IAM ロールを割り当てられるため認証情報のハードコードが不要になり、メトリクスは自動で CloudWatch に発行され、コンテナログもタスク定義のログ設定だけで送れ、ALB はタスクを直接ターゲットとして認識します。サービス間をつなぐためのコードを書かずに済む分、アプリケーションに集中できます。
詳しくは、公式ドキュメントの「Amazon ECS の AWS Fargate 用のアーキテクト」をご覧ください。
ECS の設計思想
ECS は 2014 年に発表されました。当時、コンテナを本番で使い始めた企業は、Amazon EC2 の上に自前のオーケストレーション層を組んで運用しており、その維持が大きな負担になっていました。図の言葉は、立ち上げ時の Product Manager である Deepak Singh 氏が 10 周年の公式ブログで振り返ったもので、ECS が何を解決しようとしたかを端的に表しています。
この要望へのアプローチが ECS の設計を方向づけました。汎用のオーケストレーション層を AWS 上に別途構築するのではなく、AWS のサービス群 (IAM・ELB・CloudWatch・VPC) と直結するオーケストレーターを作りました。抽象化のレイヤーが 1 枚少ない分、統合は深く、運用は軽くなります。一方でその設定は AWS 固有のものになるというトレードオフもあります。
この方針はその後も変わっていません。本記事で紹介する新機能も同じ設計思想の延長線上にあります。Amazon ECS マネージドインスタンスは、EC2 の機能を使える状態を保ったまま運用を AWS 側へ移し、Amazon ECS Express Mode は周辺サービスの統合設定そのものを自動化しました。
出典・詳細は、AWS 公式ブログの「Amazon ECS の 10 周年を祝う: 10 年間にわたるコンテナ化イノベーションの推進」をご覧ください。
タスク定義
タスク定義は、アプリケーションの設計図を JSON で宣言したものです。構成要素は図のとおりです。
まず、タスク定義は不変 (イミュータブル) です。内容の変更はできず、更新するたびに新しいリビジョンが同じファミリーの下に登録されます。デプロイはサービスが参照するリビジョンを差し替えることであり、ロールバックは旧リビジョンを指し直すことです。この仕組みが、後述するデプロイ戦略やバージョン整合性の土台になっています。
タスク定義のポイント
2 つの IAM ロールを取り違えない
最初につまずきやすいのが、図の「IAM ロール」に 2 種類あることです。
タスク実行ロールは ECS のエージェントが使うロールで、 Amazon Elastic Container Registry (Amazon ECR) からのイメージ取得や CloudWatch Logs へのログ送信に必要です。
タスクロールはコンテナ内のアプリケーションコードが使うロールで、 Amazon S3 や Amazon DynamoDB へのアクセス権限をここに与えます。ECR のプライベートイメージを指定したのに実行ロールを付け忘れると、タスクはイメージを取得できず起動に失敗します。起動に必要なのが実行ロール、起動後に使うのがタスクロールです。
タスクサイズとネットワーク
タスクサイズ (vCPU とメモリ) は Fargate では必須で、最小構成は 0.25 vCPU / 512 MiB (0.5 GB) です。組み合わせは自由ではなく、たとえば 0.25 vCPU に対してメモリは 0.5〜2 GB の範囲、といった対応表が決まっています。また Fargate のネットワークモードは awsvpc 固定で、タスクごとに専用の Elastic Network Interface が割り当てられます。このモードではポートマッピングに containerPort だけを指定すればよく (hostPort は空か同値)、ホスト側ポートの衝突を考える必要がありません。
⚠ リビジョンは 1 ファミリーあたり 1,000,000 が上限です。登録解除や削除をしたリビジョンも、このカウントから除外されません。CI/CD がコミットごとにリビジョンを登録する設計の場合、数年単位では消費が積み上がっていきます。なお、タスク定義 1 つのサイズ上限は 64 KB です。
詳しくは、公式ドキュメントの「Amazon ECS のタスク定義」をご覧ください。
クラスターとキャパシティ
クラスターはタスクを動かすリージョン内の論理グループです。図の 3 つのキャパシティのうちどれを選び、どう指定するかが設計の中心になります。
指定方法はキャパシティプロバイダー戦略が推奨です。起動タイプの直接指定はタスク定義の互換性の宣言にとどめ、実際の起動はキャパシティプロバイダーに任せる、というのが公式の推奨です。戦略では base (最低確保数) と weight (比率) で複数プロバイダーへの配分を宣言でき、クラスターの自動スケーリングとも連動します。
3 つのキャパシティの判断基準
Fargate は、サーバー実体の管理を AWS にオフロードしたい場合に選びます。タスク単位の課金で、使った分だけの支払いになります。GPU は使えません。Amazon ECS マネージドインスタンスは、EC2 の機能が必要で運用は任せたい Linux ワークロードでは第一候補になります。Windows コンテナには使えません。AWS がコスト最適な EC2 インスタンスを自動選定し、vCPU 数・CPU メーカー・アクセラレータなどの属性指定もできます。パッチ適用のためにインスタンスを 14 日でドレインして新しいものに入れ替えます。OS は AWS 管理の Bottlerocket で、SSH アクセスやカスタム AMI は使えません。EC2 は、カスタム AMI や特殊なエージェントが必須の場合、既存のリザーブドインスタンスを使い切りたい場合に選びます
オンプレミスのサーバーや他社クラウドの VM も、Amazon ECS Anywhere で外部インスタンスとしてクラスターに登録し、同じコントロールプレーンから管理できます。
⚠ 1 つのキャパシティプロバイダー戦略に入れられるのは同系統のプロバイダーだけです。マネージドインスタンス・Auto Scaling グループ・Fargate 系は互いに混在できません。ただし FARGATE と FARGATE_SPOT は同系統なので組み合わせられます。また、マネージドインスタンスは起動タイプでの指定ができず、キャパシティプロバイダー戦略の利用が必須です。
詳しくは、公式ドキュメントの「Amazon ECS クラスター」をご覧ください。
サービスと自動スケーリング
サービスは desiredCount で指定した数のタスクを維持し続ける仕組みです。
サービススケジューラは、タスクの停止だけでなく異常も検知して置き換えます。判定材料はコンテナのヘルスチェックとロードバランサーのターゲットグループのヘルスチェックで、置き換えの順序は maximumPercent の余裕次第です。余裕があれば代替タスクを先に起動してから異常タスクを止め、余裕がなければ先に 1 つずつ止めて容量を空けます。また、タスクが起動直後に異常終了し続ける場合、スケジューラは再試行の間隔を自動的に広げます。壊れたイメージへのデプロイでリソースが浪費され続けない設計です。
自動スケーリングの仕組みと目標値の考え方
自動スケーリングは Application Auto Scaling が desiredCount を書き換えることで実現されます。方式は 4 つです。ターゲット追跡はメトリクスの目標値を保つ方式で、サーモスタットのように動きます。ほかにステップ、スケジュール、予測スケーリングがあります。
目標値に「CPU 70%」のような余裕を持たせるのには理由があります。ECS がメトリクスを CloudWatch へ送るのは既定で 1 分間隔、スケールアウトの判断と新タスクの起動にはさらに時間がかかります。目標値はこの反応ラグの間にスパイクを吸収するバッファです。また、スケールインは可用性保護のため保守的に動き、クールダウン期間中はブロックされます。デプロイ中はスケールインが自動的に停止されます。デプロイ中にタスク数が減らないのはこのためです。
詳しくは、公式ドキュメントの「Amazon ECS サービスを自動的にスケールする」をご覧ください。
デプロイ戦略
4 種類の戦略の動きは図のとおりです。
デフォルトの ROLLING は、minimumHealthyPercent で維持する下限を、maximumPercent で同時に実行する上限を指定し、一度に入れ替える割合を制御します。追加リソースがほぼ不要な代わりに、新旧が混在する時間が生まれ、トラフィックの向き先は制御できません。失敗検知は 2 系統あります。デプロイサーキットブレーカーはタスクが起動できないという失敗を検知し、CloudWatch アラームは起動はするがアプリの指標が悪化するという失敗を検知します。両者は併用でき、どちらも前のリビジョンへの自動ロールバックに対応します。
BLUE_GREEN・LINEAR・CANARY は、新環境を丸ごと用意してトラフィックを移す系統です。ECS ネイティブのブルー/グリーンデプロイは 2025 年 7 月に追加され、従来必要だった AWS CodeDeploy を挟まずに実現できるようになりました。CodeDeploy 版のドキュメントも、現在は ECS ネイティブの利用を推奨しています。本番切替前にテストトラフィックで検証でき、切替後もベイク時間の間は旧環境が維持されているため、ロールバックはトラフィックを戻すだけで即座に完了します。各ステージにはライフサイクルフック (AWS Lambda 関数または一時停止ポイント) を差し込めるので、スモークテストの自動実行や手動承認をデプロイの一部にできます。
⚠ BLUE_GREEN・LINEAR・CANARY はデプロイ中、新旧のタスクセットが同時に動くため、リソース消費が一時的に最大 2 倍になります。Fargate のアカウント vCPU クォータや EC2 の空き容量が平常時の需要と同じだと、デプロイそのものが失敗します。また Network Load Balancer を使う場合、トラフィック移行の各ステージに 10 分の追加時間がかかります。
詳しくは、公式ドキュメントの「Amazon ECS ブルー/グリーンデプロイ」、ローリング更新については「タスクを置き換えて Amazon ECS サービスをデプロイする」をご覧ください。
ECS Express Mode
Express Mode は 2025 年 11 月に追加された、Web アプリの公開構成を 1 コマンドで組み上げる機能です。必要な入力は 3 つだけ、コンテナイメージ・タスク実行ロール・インフラストラクチャロール (ECS がインフラを代理構築するためのロール) です。
図の 7 つ以上のリソースの内訳は次のとおりです。HTTPS リスナーと証明書 (AWS Certificate Manager) を備えた ALB、最小限の許可に絞ったセキュリティグループ、CPU 使用率 60% を目標とするターゲット追跡スケーリング (1 ~ 20 タスク)、タスク定義 (既定 1 vCPU / 2 GB)、サービス、ロググループ、そして HTTP エラー率を監視してロールバックにつなげるアラームまで作られます。デプロイ戦略はカナリアに固定されており、更新時の安全策が最初から組み込まれています。
Express Mode の設計で重要なのは、リソースがすべて自分のアカウントに通常のリソースとして作られることです。PaaS のように内部リソースへ直接アクセスできない形にはならず、ALB の設定変更もタスク定義の差し替えも後から直接行えます。最初は全自動で作り、必要になったところから個別調整へ移れます。作り直しは不要です。Express Mode 自体は無料で、課金は作られたリソース (Fargate・ALB・CloudWatch Logs 等) の分だけです。ALB は同一 VPC 内の Express サービス最大 25 個で自動共有されるため、サービスを増やすほど 1 アプリあたりのコストは下がります。
⚠ サブネット未指定の場合はデフォルト VPC のパブリックサブネットに、インターネット向け ALB 付きで構築されます。既存の VPC 設計がある本番環境では、最初からサブネットを明示します。プライベートサブネットを渡せば内部 ALB になります。
詳しくは、公式ドキュメントの「Amazon ECS Express Mode」をご覧ください。
典型的な Web アプリ構成
図の構成は、ECS がコンテナの実行を担い、それ以外を専門のサービスに任せる役割分担の実例です。この分担には、いくつか前提があります。
大前提は、コンテナを使い捨てにすることです。タスクは障害やデプロイでいつでも入れ替わるため、ローカルに書いたデータは消えます。だからこそ状態は Amazon RDS や Amazon S3 など外部に置き、タスクはステートレスに保ちます。これができていれば、スケールアウトも置き換えも、タスク数の変更だけで済みます。
ネットワーク面では、awsvpc モードの帰結として各タスクが専用の Elastic Network Interface を持ち、そこにセキュリティグループを関連付けます。このため ALB のターゲットグループは instance ではなく ip タイプで作る必要があります。代わりに、RDS へのインバウンドはタスクのセキュリティグループからのみ許可する、というタスク粒度のネットワーク制御をそのまま記述できます。
デプロイの流れは、ECR へイメージを push → タスク定義の新リビジョンを登録 → サービスを更新、の 3 段です。このとき ECS はイメージタグをダイジェスト (内容のハッシュ) に解決してからタスクを起動するため、デプロイ中にタグが動いても、サービス内のタスクは既定で同一のイメージに揃います。図のタスク実行ロールが担っているのは、この ECR からのプルとログ送信です。
詳しくは、公式ドキュメントの「Amazon ECS タスク実行 IAM ロール」をご覧ください。
ユースケース①:マイクロサービスアーキテクチャ
マイクロサービス化すると、図にあるとおりサービスを個別にデプロイ・スケールできるようになります。ECS ではサービスがそのままデプロイとスケールの単位なので、注文サービスだけをスケールアウトする、決済サービスだけカナリアで慎重に更新する、といった運用ができます。分割の境界は、別々に変更・増減したい単位で引きます。
Service Connect がサービス間通信を担う
分割すると次に問題になるのがサービス間の呼び出しです。Service Connect を有効にすると、各タスクにプロキシコンテナがサイドカーとして自動注入され、アプリは http://payment のような短縮名で相手を呼べるようになります。名前は名前空間 (実体は AWS Cloud Map) で管理され、宛先の選択はプロキシがラウンドロビンと外れ値検出で行い、不調なタスクを避けます。接続のリトライやフェイルオーバーの処理をアプリのコードから分離できることが利点です。
内部 ALB を各サービスの前に並べる構成と比べると、Service Connect は管理するリソースが少なく、全サービスのトラフィックメトリクスが標準化された形で CloudWatch に揃います。サービス間の通信は Service Connect、外部からの入口は ALB、という使い分けが基本形です。
⚠ Service Connect を使うタスク定義では、タスクレベルのメモリ上限の設定が必須です。プロキシコンテナも同じタスクの CPU・メモリを消費するため、アプリ単体のサイジングに少し上乗せが必要です。
詳しくは、公式ドキュメントの「Service Connect を使用して Amazon ECS サービスを短縮名で接続する」をご覧ください。
ユースケース②:生成 AI・バッチ処理
Web アプリ以外でも、キャパシティを使い分ければ ECS は同じ操作感で応用できます。図の 2 例を設計の観点から補足します。
生成 AI 推論:GPU はどこで手に入るか
タスク定義で GPU 数を指定すると、ECS は GPU 対応インスタンスにタスクを配置し、物理 GPU をコンテナに固定して割り当てます。GPU が使えるのは EC2 (p 系・g 系インスタンス) とマネージドインスタンスで、後者ならアクセラレータを必須とする属性指定だけで、インスタンスの選定・パッチ・入れ替えを AWS に任せられます。Fargate は GPU 非対応なので、推論コンテナは GPU キャパシティへ、その手前の API・前処理は Fargate へ、と 1 つのクラスター内で分けるのが定石です。
バッチ処理:Spot の割引は中断を前提とした設計とセット
Fargate Spot は通常の Fargate 料金から最大 70% 引きで使えますが、AWS が容量を回収する際に 2 分前の警告付きで中断されます。したがって前提はタスク側の中断耐性です。SIGTERM を受けたら途中結果を Amazon S3 に書き出して終了すること、同じ入力で再実行しても結果が壊れないべき等な処理にすること、この 2 点を満たせば、中断はリトライで済むようになります。強制終了までの猶予はタスク定義の stopTimeout で調整でき、既定は 30 秒です。入力も出力も S3 に置き、タスク自身は状態を持たない構成が図の形です。
キャパシティプロバイダー戦略で FARGATE に base を、FARGATE_SPOT に weight を振れば、最低限をオンデマンドで確保して増加分を Spot に流す構成も 1 つのサービスで実現できます。
詳しくは、公式ドキュメントの「GPU ワークロード向けの Amazon ECS タスク定義」をご覧ください。
制限事項・注意点
主要なクォータは図のとおりです。
まず、図にある「数」の上限(1 クラスターあたりサービス 5,000 など)は、通常の設計ではまず到達しません。運用で実際に制約になるのは、速度と同時量の制限です。タスクの起動レートは 1 サービスあたり毎分 500(Fargate では、東京を含む主要リージョン以外は 125)で、大規模なスパイク時のスケールアウトやデプロイの所要時間を規定します。さらに Fargate にはアカウント単位の同時 vCPU 数クォータがあり、新規アカウントでは初期値が低く設定されて使用実績に応じて自動で引き上がります。新しいアカウントで負荷試験を行うと、まずこのクォータに到達するのが典型です。
また、リビジョン数の 1,000,000 は削除しても減らないカウントですし、ブルー/グリーン系のデプロイは一時的にタスク数が倍になるため、クォータや容量は、平常時の需要にデプロイ分を加えて見積もる必要があります。マネージドインスタンスのインスタンス数は ECS ではなく EC2 側のクォータに従います。
図の注記にある Service Connect と AWS Cloud Map の関係も補足します。Service Connect は名前解決のために Cloud Map のサービスを自アカウントに自動作成します。このため Cloud Map 側のクォータが適用されるほか、作られたリソースを手動で変更・削除すると、トラフィックや以降のデプロイが予期しない挙動になります。管理は ECS 側から行い、Cloud Map 側は触らないのが原則です。
詳しくは、公式ドキュメントの「Amazon ECS の Service Quotas」をご覧ください。
類似サービス比較
比較表と選定フローは図のとおりです。
最大の違いは、運用責任がどちらに寄るかです。Amazon EKS を選ぶと Kubernetes の年数回のバージョンアップへの追随と、アドオン群の維持が自分の仕事として残ります。その対価が K8s 標準 API とエコシステム(Helm・既存マニフェスト資産・マルチクラウド戦略)です。ECS にはオーケストレーターのバージョンという概念自体がなく、この維持コストがゼロになります。AWS Lambda はさらに軽く、実行環境の管理は不要ですが、1 回の実行は最大 15 分、ペイロードやランタイムの制約の中で設計することになります。
「ポータビリティ」の行も誤解されやすい項目です。AWS 依存なのはタスク定義やサービス設定といったオーケストレーション層の記述であって、コンテナイメージそのものはどこでも動きます。移行時に書き直すことになるのは設定であって、アプリケーションそのものではありません。
実際のシステムでは併用が普通です。イベント駆動の非同期処理は Lambda、常駐 API とバッチは ECS、というように図の選定フローをコンポーネント単位で適用してください。1 つのシステムに 1 つの実行基盤、と決める必要はありません。
詳しくは、公式ドキュメントの「AWS コンテナサービスの選択」をご覧ください。
ECS の料金体系
課金の構造は図のとおりです。
Fargate の要点は「リクエスト値」への課金です。タスク定義に書いた vCPU・メモリの分を、実際の使用率が 1 割でも満額支払います。Fargate の節約はタスクサイズの適正化そのものです。エフェメラルストレージは 20 GB まで追加料金なしで、超過分から課金されます。課金は秒単位 (最低 1 分。Windows は OS 料金が加算され、最低 5 分) です。継続利用が見込めるなら Compute Savings Plans で最大 50% の割引が、中断を許容できるなら Fargate Spot で最大 70% の割引が狙えます。また ARM (AWS Graviton) は x86 より単価が低く、イメージが対応していれば乗り換えだけで下がるコストです。
マネージドインスタンスは EC2 インスタンス料金と ECS 管理料金の 2 階建てで、どちらも秒単位・最低 1 分です。注意したいのは割引の適用範囲で、リザーブドインスタンスや Savings Plans、Spot の割引が適用されるのは EC2 部分だけです。管理料金には適用されません。課金はタスクの使用分ではなくインスタンス全体なので、実効単価を下げる鍵はインスタンスの使用率です。マネージドインスタンスが既定で複数タスクを大きめのインスタンスに詰め込むのは、この使用率を上げるためです。
EC2 起動タイプは ECS の追加料金がゼロで、支払いは EC2 インスタンス料金のみです。ただし空いているインスタンスにも満額を支払うため、詰め込み (ビンパッキング) の責任を自分で負うことになります。コスト最適化の中心は、Fargate ではタスクサイズの適正化、マネージドインスタンスと EC2 ではインスタンス使用率の改善になります。
⚠ 単価はリージョン・OS・CPU アーキテクチャで異なり、改定もあります。また、ALB や CloudWatch Logs、データ転送など周辺サービスの料金は別途かかります。見積もりの際は必ず公式料金ページで最新の単価を確認してください。
料金は変更される場合があります。詳しくは、「AWS Fargate の料金」でご確認ください。
参考資料
ECS についてさらに学ぶための公式リソースです。QR コードから各リソースにアクセスできます。
各リソースの使い分け:
- 公式ドキュメント : 全機能・API・設定値・クォータの正確な確認
- ベストプラクティス : ネットワーク・セキュリティ・デプロイ高速化などの設計指針
- AWS Black Belt : 体系的な学習や機能の詳細な理解
- AWS ブログ : Express Mode やマネージドインスタンスなど新機能の最新情報
なお、英語版の公式ドキュメントは日本語版より更新が早い場合があります。本記事で扱った 2025 年以降の新機能は特に、最新の仕様確認には英語版も参照することをおすすめします。
⚠ 本記事は 2026 年 9 月時点の情報です。料金や仕様は変更される場合があるため、最新情報は公式ドキュメントをご確認ください。
まとめ
最後に、本記事で解説した ECS の主要な機能とポイントを一枚にまとめた図をご覧ください。 ECS は、コンテナの外側の仕事をどこまで AWS に渡すかを選べる基盤です。タスク定義・サービス・クラスターという基本の構造は変わらないまま、渡す範囲だけを Fargate・マネージドインスタンス・EC2 で選び直せます。
設計時に押さえておきたいポイント
- キャパシティは戦略で選ぶ : 起動タイプの直指定ではなくキャパシティプロバイダー戦略を使います。サーバー実体の管理を AWS にオフロードしたいなら Fargate、EC2 の機能が必要で運用は任せたい Linux ワークロードならマネージドインスタンス、カスタム AMI が必須なら EC2。1 つの戦略に異なる系統は混在できません。
- 2 つのロールを取り違えない : 起動に必要なのがタスク実行ロール(ECR プル・ログ送信)、起動後にアプリが使うのがタスクロール。権限はタスク単位で最小に絞ります。
- デプロイは失敗検知とセットで設計 : サーキットブレーカー・CloudWatch アラーム・ベイク時間を組み合わせ、自動ロールバックまでを含めてデプロイと考えます。ブルー/グリーン系は一時的にリソースが倍になる前提で容量を見積もります。
- コストはリクエスト値と使用率で決まる : Fargate はタスクサイズの適正化、マネージドインスタンス / EC2 はインスタンス使用率がコストを左右します。中断に耐える設計ができれば Spot で大きく下げられます。
- クォータは数より速度を見る : 実際に制約になるのは起動レートと Fargate の vCPU クォータです。スパイクとデプロイの同時量で見積もります。
ECS を使う利点は、コンテナ運用の手間を AWS に任せて、アプリケーションの開発に集中できることにあります。オーケストレーターの構築や更新は不要で、IAM・ALB・CloudWatch との連携は設定だけで済み、Fargate と EC2 起動タイプならオーケストレーションへの追加料金もありません。マネージドインスタンスや Express Mode のように、任せられる範囲を広げる機能も増え続けています。本記事が、ECS を活用する手がかりになれば幸いです。
筆者プロフィール
米倉 裕基
アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター・イラストレーター
日英テクニカルライター・イラストレーター・ドキュメントエンジニアとして、各種エンジニア向け技術文書の制作を行ってきました。趣味は娘に隠れてホラーゲームをプレイすることと、暗号通貨自動取引ボットの開発です。現在、AWS や機械学習、ブロックチェーン関連の資格取得に向け勉強中です。
監修者プロフィール
伊勢田 氷琴
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト
普段は業種業界問わず幅広いお客様の技術支援に携わっています。最近は Strands Agents や Amazon Bedrock AgentCore など AI エージェントの実装技術やビジネスとしての生成 AI 活用に関心を持ち、ブログや講演で積極的に情報発信を行なっています。
三浦 晟太郎
アマゾン ウェブ サービス ジャパン合同会社ソリューションアーキテクト
普段はエンタープライズのEC業界のお客様を中心に技術支援をしています。学生時代からハッカソンでWebアプリばかり作っていたのでWeb系の技術が得意です。好きなサービスはKiroとAWS CDKです。最近のマイブームは映画をレイトショーで見に行くことです。