Amazon ECS/Fargateのコスト最適化アプローチ

2025.03.24
マルチクラウド 技術 AWS クラウド活用 コスト削減
Amazon ECS/Fargateのコスト最適化アプローチ

こんにちは。技術本部の技術戦略推進部に所属している髙橋 洋樹です。私は全社の開発技術力の強化をミッションとする部署に所属しながら、特にパブリッククラウドに関する全社共通基盤の企画・運用、アーキテクトの育成、ガイドラインの策定などを推進しています。これまでにもAWSを中心に以下のブログを執筆していますので、よければ併せてご覧ください。

さて今回は、クラウド界隈で引き続き注目が集まる「FinOps(フィンオプス)」領域より、Amazon ECS/Fargateのコストを最適化する上で検討したいポイントをご紹介します。ちなみにFinOpsとは、クラウド財務管理の新しいアプローチで、Finance(財務)とDevOps(開発運用)を組み合わせた造語です。クラウド環境でのコスト最適化を通じて、ビジネス価値の最大化を目的としています。
クラウド活用が浸透し利用方法も多様化している昨今、クラウド導入に対して「想定よりもコスト削減効果を享受できなかった」という感触をお持ちのお客様は増えてきているのではないかと思います。今回のブログがFinOpsへの理解を深める一助となれば幸いです。

Amazon ECSとFargateについておさらい

コスト最適化の話をする前にECSの構成要素とFargateの課金体系についておさらいをしておきましょう。

Amazon ECSの構成要素

Amazon ECSは大きく4つの要素で構成されています。詳細は下図と表をご覧ください。

引用:Amazon ECS入門(2025年3月)
引用:Amazon ECS入門(2025年3月)
概念 説明
クラスタ サービスとタスクを実行する基盤。
サービス タスクの実行数やどのELBと紐づけるかなどを定義する。
タスク定義 タスクを実行するコンテナ群の定義。コンテナのソースや、タスクに割り当てるCPU/メモリを指定する。
タスク ECSのコンテナ実行の最小単位。一つ以上のコンテナで構成される。同じタスクに所属するコンテナは同じホストにデプロイされる。

AWS Fargateの課金体系

Fargateは基本的に実行したタスクの数とタスクが要求したvCPUとメモリに応じて課金が発生します。2025年2月現在の東京リージョンのLinux/X86アーキテクチャのvCPU/メモリあたりの利用料金は以下の通りです。

AWS FargateのvCPU/MEMに対する課金(執筆時点の東京リージョンの料金)
課金要素 料金(USD)
1時間あたりのvCPU $0.05056
1時間あたりのGB $0.00553

お勧め7選!コスト最適化の手段

それではこれらを踏まえて、Fargateのコスト最適化アプローチを考えていきましょう。システム環境ごとに適用できるものとそうでないものがあると思いますが、私が考える有効な手段を7つご紹介していきますので、ご自身の業務の中で取り入れられそうなものがあるかチェックしてみてください。

  1. コスト配分タグの付与&タグ伝播の有効化
  2. タスクサイズの最適化(Cost Optimization Hubの活用)
  3. スケーリング
  4. Gravitonの活用
  5. 購入オプションの検討
  6. VPC Endpointの設置
  7. サービス間通信の検討

1. コスト配分タグの付与&タグ伝播の有効化

最適化していく上でまず注目したいのはコストの可視化です。同じAWSアカウント内に複数のプロジェクトやサービスが同居する場合、何がいくら使っているのかを集計するのは困難です。コスト配分タグを有効化し、タグをサービス定義、タスク、クラスタなどのリソースに付与することでタグごとにコストの集計をできるようにしましょう。

ここまでは一般的なコスト配分タグの話となりますが、特にAmazon ECSを利用する場合に気を付けたいのがタグ伝搬機能の有効化です。タスク定義またはサービスにタグ付けをしていても、タスクにはデフォルトではタグは付与されません。そのため、サービスの作成時に必ずタスク定義またはサービスからのタグ伝搬を有効化しましょう。

タグ伝搬機能の有効化(筆者作成)
タグ伝搬機能の有効化(筆者作成)

コスト配分タグとタグ伝搬を有効化した上で、Cost ExplorerやCURレポート等を用いてコストの可視化と分析をしていきましょう。

2. タスクサイズの最適化(Cost Optimization Hubの活用)

ECS/Fargateで動かすタスクサイズ(vCPU、メモリ)を実際に合わせて適切に設定することでコストの最適化を見込むことができます。このタスクサイズ最適化に役立つのがCost Optimization Hubです。Cost Optimization Hubは複数のリージョン/アカウントに渡ってコスト最適化のための推奨事項を提供してくれるサービスです。AWSにはコスト最適化サービスとしてCompute OptimizerやTrusted Advisorなどがあり、それらを統合する役割を担っています。もちろんECS/Fargateにも対応しています。ECS/Fargateでは適切なタスクサイズの設定やSavings Plansの購入に関する推奨事項を教えてくれます。

引用:AWS Compute Optimizerユーザーガイド(2025年3月)
引用:AWS Compute Optimizerユーザーガイド(2025年3月)

3. スケーリング

ワークロードの変動に応じてタスク数をスケーリングすることでも、コスト最適化の効果を見込むことができます。ECSはApplication Auto ScalingによってCloudWatch Alarmで設定したメトリクスの閾値に応じたスケールアウト、スケールインを構成することが可能です。また、検証や開発環境など夜間や休日に停止可能な環境は別途停止をスケジュールしましょう。方法はいくつかありますがEventBridge Schedulerを利用すると、Lambdaを記述することなく、タスクの自動起動、停止を手軽にスケジュールできるためお勧めです。

EventBridge Schedulerによるスケーリング(筆者作成)
EventBridge Schedulerによるスケーリング(筆者作成)

4. Gravitonの活用

EC2同様、Fargateにおいても、CPUにGravitonを選択することでコストの削減を見込むことができます。アプリケーションやバージョンによる互換性の問題がなければ積極的に活用するとよいでしょう。余談ですが、Gravitonは後述するFargate Spotにもつい先日対応したのでこれからますますGravitonの活用が広がりそうです。

5. 購入オプションの検討

ECS/Fargateは2つの購入オプションをサポートしています。まずは、Compute Savings Planです。時間当たりのvCPUとメモリの利用料を1年または3年間コミットすることで最大72%の割引を受けられます。これまで述べたコスト最適化の内容を検討した上で、安定的な稼働が見込まれる場合は購入を検討しましょう。なお、先ほど紹介したCost Optimization HubでもSavings Planに関する推奨事項を確認することができます。

次に、Fargate Spotです。中断を許容できるアプリケーションであれば、Fargate Spotを活用することで最大70%程度の割引を受けられます。Fargate Spotは中断する2分前にSIGTERMシグナルをアプリに送れるので、時間内にアプリを終了できるかどうかが採用基準の一つになります。

引用:ECSのアプリケーションを正常にシャットダウンする方法(2025年3月)
引用:ECSのアプリケーションを正常にシャットダウンする方法(2025年3月)

なお、一定数のタスクは常に起動しておく必要がある場合にもFargate Spotを利用できることをご存じでしょうか?Capacity Provider戦略を利用すると通常タスクの最低個数を設定しつつ、Fargate Spotのタスクを混在させて実行できますので、ぜひリンクから確認してみてください。

Capacity Provider戦略(筆者作成)
Capacity Provider戦略(筆者作成)

6. VPC Endpointの設置

コンテナイメージをECRに保存している場合限定ですが、VPC Endpointを設置することもコスト削減に有効な手段です。AWS Fargateはコンテナイメージのキャッシュができないため、タスクが起動するたびにイメージを取得する必要があり、イメージの取得コストがEC2と比較して高くなる点に着目した対処法です。

前提として、イメージの取得に当たってはECRと、そのバックエンドであるS3にアクセスが発生します。S3にはコンテナイメージの実データが保存されているためです。そして、ECSのタスクは通常プライベートサブネットで実行されるため、コンテナイメージを取得するにはNAT Gateway等を利用する必要があります。ただNAT Gatewayは時間当たりの料金に加え、データ処理料金が発生してしまいます。さらに、VPC外に出るためOut方向のデータ転送料も発生します。

S3 Gateway Endpointの有無(筆者作成)
S3 Gateway Endpointの有無(筆者作成)

そこで、S3 Gateway Endpointを設置すれば、NAT Gatewayを経由せずにVPCから直接S3にアクセスすることが可能になり、データ転送料が節約できます。Gateway Endpointは無料で利用できるため、積極的に利用するとよいでしょう。なお、ECRもEndpointはありますが、こちらは時間単位とデータ転送量の課金があるため計算、比較の上で利用を検討しましょう。

7. サービス間通信の検討

ECSの異なるサービス間で通信を行いたい場合、サービス間通信を構成します。サービス間通信の構成方法は現在4つあり、それぞれ課金体系や出来ることが異なります。例えばECS Service Connectはタスクごとに課金されるのでタスクが多い環境だと割高、ECS Service Discoveryは安価な一方で可観測性が低いという具合です。要件に応じて方法を選択しましょう。

ECSサービス間通信のコスト・特徴の比較(筆者作成)
ECSサービス間通信のコスト・特徴の比較(筆者作成)

終わりに

さて、AWS ECS/Fargateのコスト最適化に役立つ方法を紹介してきました。ご自身が管理されている環境と照らし合わせながら、どの手法が有効そうであるか、ぜひこの機会に確認してみてください。なお当社では、AWS包括的技術支援サービスを提供しています。AWSの利用についてお困りのことがございましたらこちらからぜひお気軽にお問い合わせください。

関連ページ

おすすめブログ

今日から始めるAWSのコスト最適化(1)
今日から始めるAWSのコスト最適化(1)
コストの最適化にあたっては、Ⅰ. 可視化、Ⅱ. 最適化、Ⅲ. 計画・予測というプロセスを定常的に実施することが必要だと考えています。今回は「Ⅰ. 可視化」についてどのような方法があるのか、直近のアップデートやベストプラクティスを踏まえながら紹介します。
AWSコンテナ入門(1):Amazon ECSとAmazon EKSの役割と概要
AWSコンテナ入門(1):Amazon ECSとAmazon EKSの役割と概要
「Amazon ECS」と「Amazon EKS」というサービスをご存じでしょうか?どちらも、AWSが提供するコンテナ関連のサービスなのですが、名前も似ており使い分けがいまいちピンと来ていない方も多くいらっしゃることと思います。これを機に、ECSとEKSの役割や特長について学んでみませんか?