サーバーレスのAWS FargateとAWS Lambdaの使い分けについて

最終更新日:2026年8月6日

この記事でわかること

  1. AWS Fargateとは
  2. AWS Lambdaとは
  3. AWS FargateとAWS Lambdaの比較
  4. この記事のポイント
  5. よくある質問
  6. 関連記事
  7. まとめ

はじめに

項目 AWS Microsoft Azure Google Cloud
世界シェア 約33%(首位) 約22% 約11%
強み サービス数・実績 Microsoft製品連携 データ分析・AI
無料枠 12ヶ月+常時無料 12ヶ月無料 常時無料枠あり
主な資格 CLF / SAA / SAP AZ-900 / AZ-104 ACE / PCA

【要注意】上記のシェア・料金・資格名は変動する場合があります
クラウド市場シェアや無料枠の内容は時期により変わるため、最新の情報は各社公式サイトでご確認ください。

AWSのサーバーレスコンピューティングを利用する際に、いずれもサーバーレスの利点を提供するという共通点から、AWS FargateとAWS Lambdaのどちらを選択するか悩むことはないでしょうか。そこで本記事では、AWS FargateとAWS Lambdaの比較を行います。前半では、それぞれの概要と利点を紹介し、後半では、いくつかの項目で比較を行い、使い分けの例を紹介します。

AWS Fargateとは

AWS Fargateは、Amazon ECS(Dockerコンテナに対応したコンテナ管理サービス)とAmazon EKS(フルマネージドのKubernetes サービス)の両方で動作する、コンテナ向けサーバーレスコンピューティングエンジンです。 Amazon ECSとAmazon EKSはいずれも、AWS Fargateによってプロビジョニングされたコンテナを使用します。ユーザーは、スケーリング、負荷分散、コンテナ利用のためのスケジュール管理などをすることなく、コンテナをデプロイできます。

AWS Fargateの利点を紹介します。

サーバーレス

AWS Fargateを利用すると、ユーザーは、サーバーのスケーリングや、パッチ適用、保護、管理に関わる運用上の作業から解放されます。コンテナのみの操作で済むため、Amazon ECSもしくはAmazon EKSで実行するアプリケーションの構築と運用に集中することができます。また、コンテナが実行されるインフラストラクチャは、必要なパッチにより常に最新の状態に保たれます。

適切なサイズのリソース

AWS Fargateでは、ユーザーが指定したリソース要件に一致するように、コンテナに対してコンピューティングを起動し、スケーリングします。

設計段階からのワークロードの分離

各ECSタスクまたは各EKSポッドは、専用カーネルのランタイム環境でそれぞれ実行されます。リソース(CPUや、メモリ、ストレージ、ネットワーク)が他のタスクやポッドと共有されることはありません。これにより、各タスクまたは各ポッドでワークロードの分離とセキュリティの向上が可能となります。

他のAWSサービスやサードパーティ製ツールによるオブザーバビリティ

AWS Fargateでは、Amazon CloudWatch Container Insightsなどの他のAWSサービスと連携することで、すぐに利用できるオブザーバビリティを得ることができます。また、Prometheusのようなオープンなインターフェースを有する幅広いサードパーティ製ツールを介して、メトリックやログを収集し、アプリケーションをモニタリングすることができます。

AWS Lambdaとは

AWS Lambdaは、イベント発生時にアップロードされたコードを実行し、基盤となるコンピューティングリソースをAWS Lambdaが管理する、サーバーレスコンピューティングサービスです。AWS Lambdaは、例えば次の作業を行います。

  • サーバーやOS管理
  • キャパシティのプロビジョニングと自動スケーリング
  • コードとセキュリティパッチのデプロイ
  • モニタリングとロギング

そのため、AWS Lambdaを利用すると、こういった作業に煩わされることなく、コードを実行できます。それでは、AWS Lambdaの利点を紹介します。以下で登場するAWS Lambda関数とは、AWS Lambdaで実行するコードのことです。

他のAWSサービスとの拡張性

AWS Lambdaを使用すると、Amazon S3バケット、Amazon DynamoDBテーブルなどのAWSリソースにカスタムロジックを追加できます。AWS Lambda関数をトリガーする特定のAWSリソースを指定することで、リソースに変更があると、AWS LambdaはAWS Lambda関数を実行し、コンピューティングリソースを開始して管理し、受信リクエストに対応します。

カスタムバックエンドサービスの作成

AWS Lambdaを使用すると、アプリケーションに対する新規バックエンドサービスを作成し、Amazon API Gatewayで構築したLambda APIまたはカスタムAPIエンドポイントを使用してオンデマンドでトリガーできます。

複数のコードをサポート

AWS Lambdaでは、ネイティブライブラリも含め、サードパーティのライブラリを使用できます。AWS Lambdaは、Java、Go、PowerShell、Node.js、C#、Python、Rubyのコードをネイティブサポートしています。またLambda Runtime APIを利用すると、その他の言語を使用してAWS Lambda関数の作成をすることができます。(対応ランタイムのバージョンは随時更新されるため、最新の対応状況はAWS公式サイトでご確認ください。)

RDBへの接続

Amazon RDS プロキシを使用すると、RDBへの数千の同時データベース接続を効率的に管理し、スケーラブルで安全なAWS Lambdaベースのサーバーレスアプリケーションを容易に構築することができます。

ここで、Amazon RDS プロキシとは、Amazon RDS向けの高可用性フルマネージド型データベースプロキシで、アプリケーションの拡張性やデータベース障害に対する回復力と安全性を高めることができます。

パフォーマンスのきめ細かな制御

Provisioned Concurrency(プロビジョニングされた同時実行)により、サーバーレスアプリケーションのパフォーマンスを詳細に制御できます。Provisioned Concurrencyは、コードを変更することなく利用できます。コンピューティングリソースを管理することなく、必要に応じてレイテンシーの影響を受けやすいアプリケーションに、一貫したパフォーマンスを保持させることができます。

共有ファイルシステムへの接続

AWS Lambda向けAmazon EFSを利用すると、規模に関わらず、低レイテンシーで大量のデータの安全な読み取りや書き込み、保持が可能になります。一時ストレージにダウンロードするためのコードの記述は不要です。

AWS FargateとAWS Lambdaの比較

環境構築

AWS Fargate - コンテナベースのコンピューティングサービスであり、事前にバッチアプリケーションを含んだDockerイメージを用意する必要があります。

AWS Lambda - コードをアップロードすると、実行環境が構築され、イベント発生時にアップロードされたコードを実行します。

実行環境

AWS Fargate - ユーザーが用意したDockerコンテナを使用してアプリケーションを実行することができるため、開発言語に制限がなく、実行環境の構築の自由度が高いです。

AWS Lambda - 前述のように使用できるランタイムは決まっています。それ以外を使用するには、開始方法はシンプルですが、Lambda Runtime APIを利用してカスタムランタイムを構築する必要があります。

リソース

AWS Fargate - 割り当て可能なvCPUとメモリリソースの組み合わせは、用意されており、ユーザーはその中から選択します。(具体的な上限値はAWSにより拡張される可能性があるため、最新の組み合わせはAWS公式サイトでご確認ください。)

AWS Lambda - AWS Lambda関数のメモリ割り当てや、AWS Lambda関数タイムアウト(最大900秒/15分)をはじめとする、AWS Lambda関数の設定、デプロイ、実行には制限があり、変更することはできません。

以上のように、AWS FargateとAWS Lambdaは一長一短であり、目的に応じた使い分けをおすすめします。

使い分けの例

AWS Fargate - 比較的大きな規模の処理への利用や、ウェブやモバイル、PaaSなどのプラットフォーム向けマイクロサービスバックエンドなどの長時間実行されるプロセスへの利用に最適です。

AWS Lambda - データの変更や、システム状態の変化、ユーザーによるアクションにリアルタイムに応答する必要があるイベントドリブンのアプリケーションへの利用や、小規模ですぐに動かした入り処理への利用に最適です。

この記事のポイント

  • AWS FargateはDockerコンテナベースで実行環境の自由度が高く、長時間実行される処理に適している
  • AWS Lambdaはイベント駆動型のサーバーレス実行に適するが、対応ランタイムやメモリ・実行時間(最大900秒)に制限がある
  • 両者は排他的ではなく、処理の性質(長時間バッチ処理か、イベント駆動の短時間処理か)に応じて使い分けるのが基本方針

よくある質問

Q. AWS FargateとAWS Lambda、どちらから使い始めるべきですか?
A. シンプルなイベント駆動処理であればAWS Lambdaが手軽です。既存のDockerコンテナ資産がある場合や、長時間実行・大規模な処理が必要な場合はAWS Fargateが適しています。
Q. AWS Lambdaの実行時間制限を超える処理はどうすればよいですか?
A. AWS Lambdaの最大実行時間は900秒(15分)です。これを超える処理はAWS Fargateなど別のコンピューティングサービスへの切り出しや、処理を複数のLambda関数に分割する設計を検討してください。
Q. AWS FargateとAWS Lambdaを組み合わせて使うことはできますか?
A. 可能です。例えば軽量なイベント処理はLambda、長時間のバッチ処理やコンテナ化された既存アプリケーションはFargateというように、システム内で使い分けて併用するケースも多くあります。

まとめ

本記事では、サーバーレスという点で共通するAWS FargateとAWS Lambdaについて紹介し、両サービスの比較を行いました。一見、AWS Fargateは制限が少なく便利な一方で、AWS Lambdaは制限が多く扱いにくいように思うかもしれません。

しかし、Amazon DynamoDBやAmazon S3をはじめとする、複数のデータストアとの統合や、複数のイベントソースのサポートがされているAWS Lambdaでは、イベントドリブンのようなアプリケーションの利用に最適です。そのため、繰り返しになりますが、適材適所で目的に応じた使い分けをおすすめします。

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →

前の記事

AWS VPCの料金について