AWS Lambdaは、AWSが提供するサーバーレスのマネージドFaaS(Function as a Service)サービスです。
開発者はサーバーを構築せずに、自分が書いたプログラムだけをアップロードして実行できます。
EC2との違い
EC2ではOSやミドルウェアのセットアップが必要ですが、LambdaではAWSが実行環境を事前に用意しているため、利用者はプログラムの準備と設定だけで利用可能です。
| 項目 | Lambda | EC2 |
|---|---|---|
| サーバー | 必要な時だけ起動 (サーバーレス) | 常時起動している |
| 料金 | 実行回数と実行時間に応じて課金 | サーバーの稼働時間で課金 |
| インフラ | AWSが自動管理 | OS・ミドルウェアは 自分でセットアップ |
| 運用保守 | AWSが担当 | ユーザーが実施 |
💡 サーバーレスとは
「サーバーがない」という意味ではなく、サーバーの管理をAWSに任せられるという考え方です。
Lambdaの特徴:イベント駆動型で動く仕組み
Lambdaは「イベント駆動型」で動作します。
つまり、「何かの出来事(イベント)」をきっかけに自動的にコードを実行します。
🔔 たとえばこんな動作
- S3にファイルがアップロードされた → Lambdaが起動して画像をリサイズ
- DynamoDBにデータが追加された → Lambdaがメール通知を送信
- CloudWatchで毎日0時にトリガーを設定 → 定期的にバックアップ処理を実行
アレクサで考えるとわかりやすい!
「アレクサ、電気をつけて」 → 照明が点く
このように、「声(トリガー)」をきっかけに「プログラム(処理)」が自動で実行されます。
Lambdaも同じで、AWS上のイベントをトリガーにコードが動く仕組みです。
✅ ポイント
- Lambdaは「アプリケーション」ではなく、小さなプログラム単位(関数)を実行します。
- そのため「イベント駆動型プログラム実行環境」と呼ぶのが正確です。
Lambda関数とは?
Lambda関数(Lambda Function)とは、Lambdaで実行できるコードの単位です。
1つの関数に以下の情報を登録します。
- 実行するプログラム(Node.js, Python, Javaなど)
- トリガー(例:S3アップロード時、CloudWatch定期実行など)
- 実行権限(IAMロール)
- メモリやタイムアウト設定
対応言語
Node.js / Python / Java / C# / Go / Ruby / PowerShell
⚠️ Lambda関数は1回の実行が最大15分までという制限があります。
長時間処理や大規模バッチには不向きです。
Lambdaの処理イメージ
- S3に画像をアップロード(イベント発生)
- Lambda関数が自動的に呼び出される(トリガー)
- AWS上で一時的に「コンテナ」が起動してプログラム実行
- 処理完了後、コンテナは削除
つまり、必要なときだけ動くサーバーです。
料金体系
Lambdaは「使った分だけ課金される」従量課金モデルです。
- リクエスト数:100万リクエストにつき約0.2 USD
- 実行時間:割り当てたメモリ量に応じて課金
(メモリに比例してCPUリソースも割り当てられる)
💡 コスト最適化のポイント
- 処理時間を短くする
- メモリ量を最適化する
- 不要なトリガーを減らす
プロビジョニングされた同時実行
Lambdaはリクエストごとに新しい環境(コンテナ)を起動します。
このとき初回のみ「コールドスタート」と呼ばれる数秒の遅延が発生する場合があります。
プロビジョニングされた同時実行を設定すると、
あらかじめ一定数のインスタンスをウォーム状態で維持し、遅延を防止できます。
check
- 応答速度が重要なシステム(チャット、ゲームAPIなど)で有効
- 高負荷トラフィックを予測できる場合に活用
- 有効化すると追加コストが発生
Lambda@Edge
例えば沖縄の人がLambdaを呼び出す場合、基本的には東京リージョンでLambdaが起動します。
そうなると、沖縄 → 東京(AWSデータセンター)→ Lambda実行 → 沖縄へ結果を返す という流れになり、
物理的に距離があることから、ある程度の遅延が発生してしまいます。
Lambda@Edgeは、CloudFrontのエッジロケーションでLambda関数を実行できる拡張機能で、
沖縄にもエッジロケーションがあり、すべての処理が沖縄内で完結するので、遅延が少なくなります。
このように世界中のユーザーの近くでLambdaを呼び出して、応答速度を向上させる機能がLambda@Edgeです。
VPCアクセスと注意点
デフォルトでは、Lambda関数はLambda専用のVPC内で実行されます。
そのため、プライベートサブネットのRDSやElastiCacheには直接アクセスすることができません。
プライベートリソースにアクセスしたい場合は「VPCアクセス」を設定します。
check
- VPCアクセスを有効化すると、ENI(Elastic Network Interface)が作成される
- Lambda関数が指定したサブネット内で通信可能になる
ただし、VPCアクセスを設定するとインターネット通信ができなくなるため、
必要に応じてNATゲートウェイを経由させます。
まとめ
- AWS LambdaはサーバーレスなFaaS
- イベント駆動型でコードを自動実行
- 最大15分までの短時間処理に最適
- 従量課金でコスト効率が高い
- プロビジョニング同時実行でコールドスタートを回避
- VPCアクセス設定でプライベート通信も可能

コメント