AWS Lambdaとは ― サーバーレスの仕組みとEC2との違い
Lambdaは、
AWS Lambdaとは、サーバを管理せずにコードを実行できるサービス
サーバを用意せず、コードだけを置いて動かせるのがAWS Lambdaです。S3にファイルが置かれたときやAPIにリクエストが来たときなど、イベントのたびに関数が動きます。課金されるのは、動いた分だけです。AWS公式ドキュメントは、Lambdaを「サーバのプロビジョニングや管理をせずにコードを実行できるサービス」と説明しています。プロビジョニングとは、サーバなどの資源を事前に用意することです。
EC2では、利用者が仮想サーバを起動し、OSの更新などを自分で管理します。Lambdaでは、サーバにあたる部分(基盤・OSのパッチ適用・容量の確保)をAWSがすべて管理します。こうした仕組みをサーバーレスと呼びます。一般的な考え方はサーバーレスの記事にまとめています。
Lambdaの関数の動かし方には、複数の種類があります。ここで説明するのは、イベントをきっかけに関数を実行する基本の形です。Webアプリをそのまま動かす形や、長時間の専用環境を使う形は扱いません。
関数・トリガー・実行環境の関係
Lambdaの仕組みは、関数・トリガー・実行環境の3つで成り立ちます。関数は、利用者が書くコードそのものです。コードの中で、イベントを受け取って処理を行う部分をハンドラと呼びます。
トリガーは、関数を実行するきっかけになるイベントの発生源です。トリガーの例は、API Gateway・Amazon S3・Amazon SQS・EventBridgeなどです。これらを含め200以上のAWSサービスをトリガーにできます。
HTTPのリクエストで関数を呼ぶ仕組みは、API Gatewayの記事で説明しています。SQSのキューを間に置く理由は、SQSとSNSの記事で説明しています。データベース接続用のパスワードは、コードに書かなくても、Secrets Managerから実行時に取得できます。
実行環境は、関数のコードが実際に動く場所です。イベントが来るとLambdaが実行環境を用意し、関数を実行します。処理が終わった実行環境は一時停止され、次の呼び出しで再利用されることがあります。ただし、AWS公式ドキュメントは、呼び出しの間で状態を共有しない前提で関数を書くよう求めています。
EC2との違いは、課金される区間
EC2は、インスタンスが起動している間の時間で課金されます(Amazon Linuxなど対象のOSでは秒単位)。EC2の記事で説明したとおり、インスタンスは利用者が起動し、止めるまで動き続けます。処理をしていない時間も、起動している限り課金されます。
Lambdaは、呼び出しの回数と、関数のコードが動いた時間(1ミリ秒単位)で課金されます。イベントを待っているだけの時間は課金されません。AWS公式ドキュメントは、この特徴を「使った分だけ払う。前払いの約束は不要」と説明しています。ただし、実行環境をあらかじめ確保しておく設定もあります。この「プロビジョニングされた同時実行」を使うと、待機中もその分の料金がかかります。
どちらが向くかは、処理の頻度と持続時間で決まります。常に一定の負荷がかかる処理には、EC2が向きます。不定期なイベントに短時間だけ応答する処理には、Lambdaが向きます。1つのアプリを小さなサービスに分けるマイクロサービスでは、サービスの一部をサーバーレスで動かす構成もあります。
Lambdaには、実行時間とメモリの上限がある
Lambdaの関数には、実行時間やメモリなどの上限があります。たとえば1回の実行は最大15分までなので、それより長く続く処理はそのままでは動かせません。長時間動き続ける処理をサーバの管理なしで動かす方法には、Fargateがあります。詳しくはAmazon ECSの記事で説明しています。Webアプリのコードを渡してEC2上で動かし続ける場合は、Elastic Beanstalkを使えます。処理を段階ごとの関数に分けて順につなぐなら、AWS Step Functionsが順番と再試行を管理します。
| 項目 | 上限・既定値 |
|---|---|
| メモリ割り当て | 128 MBから10,240 MBまで、1 MB刻みで設定できる。CPU性能はメモリに比例し、1,769 MBで1vCPU相当になる |
| 実行時間(タイムアウト) | 既定値は3秒。最大900秒(15分)まで設定できる |
| 同時実行数 | デフォルトのクォータは1,000。AWSに申請すれば引き上げられる |
| デプロイパッケージサイズ | Lambda APIやコンソールから直接アップロードするzipは50MBまで(より大きいzipはS3経由でアップロードする)。展開後の中身は250MBまで |
最新の上限値はAWS公式ドキュメントの「Lambda quotas」で確認してください。本文中の数値は、2026年10月17日に確認した値です。
料金は、リクエスト数と実行時間で決まる
Lambdaの料金は、関数が呼び出された回数(リクエスト数)と、実行にかかった時間(GB秒)で決まります。GB秒は、割り当てたメモリ量(GB)と実行時間(秒)をかけた値です。メモリを増やすとCPU性能も上がりますが、GB秒も増えます。
期限のない無料利用枠(Always Free)は、月100万リクエストと40万GB秒です。この値は、2026年10月17日にAWS公式ページで確認しました。次の図で、メモリ・実行時間・呼び出し回数からGB秒を計算し、無料利用枠に占める割合を確認できます。
GB秒 = 割り当てメモリ(GB、MB÷1,024)× 実行時間(秒)× 呼び出し回数。無料利用枠の数値は2026年10月17日にAWS公式ページで確認した値です。具体的な料金(USD)は含みません。
具体的な料金(USD)は、リージョンやCPUアーキテクチャによって異なり、変動することもあります。最新の料金はAWS公式の料金ページで確認してください。
参考にした資料
- AWS「What is AWS Lambda?」(Lambdaの定義、関数・トリガー・実行環境の関係、課金の特徴)
- AWS「Lambda quotas」(実行時間・メモリ・同時実行数・デプロイパッケージサイズの上限)
- AWS「Understanding the Lambda execution environment lifecycle」(実行環境の一時停止と再利用)
- AWS「Configure Lambda Event Function timeout」(タイムアウトの既定値3秒)
- AWS「AWS Lambda Pricing」(料金の構成、課金時間の単位、無料利用枠)
- AWS「AWS Free Tier」(Lambdaの無料利用枠が期限のない枠であること)
- AWS「Amazon EC2 Pricing」(EC2の秒単位の課金と対象のOS)
練習問題(全4問)
正解:サーバの
AWS公式ドキュメントは、
正解:EC2は
EC2は、
正解:トリガー
AWS公式ドキュメントの
正解:メモリの
AWS公式ドキュメントの
選んでから「採点する」を押すと、解説つきで答え合わせができます。