「サーバーレスって聞くけど、サーバーがないってどういうこと?」「Lambdaって何ができるの?」
AWSの中でも特に人気が高いサービスのひとつがLambda(ラムダ)です。サーバーの管理なしでコードを実行できる、まさに「サーバーレス」を体現するサービスです。
この記事では、Lambdaの基本を身近な例えを使いながら、初心者にもわかりやすく解説します。
Lambdaとは?一言でいうと「必要なときだけ動く自動販売機」
AWS Lambdaとは、サーバーを用意せずにコードを実行できるコンピューティングサービスです。
身近な例えで言うと、「自動販売機」のようなものです。
従来のサーバー(EC2など)は、お店を開いて店員を常駐させるようなもの。お客さんが来ても来なくても、人件費(サーバー費用)がかかります。
一方、Lambdaは自動販売機。お客さんがボタンを押したときだけ動いて、商品を出します。待機中は電気代(コスト)もほとんどかかりません。
サーバーレスとは?
「サーバーレス」と言っても、実際にはサーバーは存在します。ただ、サーバーの管理をAWSに完全に任せられるという意味です。
開発者が気にすることは、以下のように変わります。
| 項目 | 従来のサーバー | Lambda(サーバーレス) |
|---|---|---|
| サーバーの用意 | 自分で構築 | 不要 |
| OSの管理 | 自分でパッチ適用 | 不要 |
| スケーリング | 自分で設定 | 自動 |
| 可用性の確保 | 自分で設計 | 自動 |
| 課金 | 起動時間に応じて | 実行時間に応じて |
開発者はコードを書くことだけに集中できます。
Lambdaの特徴
Lambdaには、以下のような特徴があります。
1. 使った分だけ課金
Lambdaは実行された時間とリクエスト数に対してのみ課金されます。コードが実行されていない間は、料金がかかりません。
EC2のように「起動しているだけでお金がかかる」ということがないため、特にアクセスが不定期なアプリケーションでは大幅なコスト削減になります。
2. 自動スケーリング
リクエストが増えると、Lambdaは自動的に並列実行してくれます。1リクエストでも1万リクエストでも、設定を変えることなく対応できます。
急なアクセス増加にも対応できるため、イベント時のトラフィック増加なども心配いりません。
3. 高可用性
Lambdaは複数のアベイラビリティゾーンで実行されるため、インフラの障害に強い設計になっています。開発者が可用性について考える必要がありません。
4. 多様なプログラミング言語に対応
Lambdaは以下のプログラミング言語(ランタイム)をサポートしています。
- Python(3.9〜3.14)
- Node.js(18.x〜24.x)
- Java(11〜25)
- Go
- Ruby
- .NET(C#、PowerShell)
- カスタムランタイム(任意の言語)
初心者にはPythonまたはNode.jsがおすすめです。情報が豊富で、学習コストが低いためです。
Lambdaの仕組み
Lambdaがどのように動くのか、基本的な仕組みを見ていきましょう。
Lambda関数
Lambdaで実行するコードのことを「Lambda関数」と呼びます。関数には以下の要素があります。
- ハンドラー:関数が呼び出されたときに最初に実行される関数
- イベント:関数に渡されるデータ
- コンテキスト:実行環境に関する情報
Pythonの例を見てみましょう。
def lambda_handler(event, context):
# eventには呼び出し元からのデータが入っている
name = event.get('name', 'World')
# 処理を実行
message = f'Hello, {name}!'
# 結果を返す
return {
'statusCode': 200,
'body': message
}
トリガー
Lambda関数は、何かの「きっかけ(トリガー)」によって実行されます。主なトリガーには以下のようなものがあります。
| トリガー | 説明 | ユースケース |
|---|---|---|
| API Gateway | HTTPリクエスト | REST API、Webhook |
| S3 | ファイルのアップロード・削除 | 画像のリサイズ、データ加工 |
| DynamoDB | データの変更 | 変更通知、データ連携 |
| CloudWatch Events | スケジュール実行 | 定期バッチ処理 |
| SQS | メッセージキュー | 非同期処理 |
| SNS | 通知 | イベント駆動処理 |
実行の流れ
- トリガーが発生(例:S3にファイルがアップロードされる)
- Lambda関数が起動(実行環境が準備される)
- ハンドラーが実行(コードが処理を行う)
- 結果を返す(呼び出し元にレスポンス)
- 実行環境が待機(しばらく再利用可能な状態で保持)
Lambdaの制限事項
Lambdaには、知っておくべき制限事項があります。
| 項目 | 制限 |
|---|---|
| 実行時間 | 最大15分(900秒) |
| メモリ | 128MB〜10,240MB |
| デプロイパッケージ | 50MB(zip)、250MB(解凍後) |
| 一時ストレージ(/tmp) | 512MB〜10,240MB |
| 同時実行数 | デフォルト1,000(引き上げ可能) |
| 環境変数 | 合計4KB |
特に実行時間の15分制限は重要です。長時間かかる処理には向いていません。
Lambdaに向いている処理
- APIのバックエンド
- ファイル処理(画像のリサイズ、データ変換など)
- 定期的なバッチ処理
- イベント駆動の処理
- リアルタイムのデータ処理
Lambdaに向いていない処理
- 15分以上かかる処理
- 常時接続が必要な処理(WebSocketなど)
- 大量のメモリを必要とする処理
- GPUを使用する処理
Lambdaの料金体系
Lambdaの料金は、リクエスト数と実行時間の2つで計算されます。
課金の仕組み
- リクエスト料金:100万リクエストあたり$0.20
- 実行時間料金:メモリ量×実行時間(1ミリ秒単位)
メモリを増やすと、CPUパワーも比例して増加します。実行時間が短くなる場合もあるので、最適なメモリ量を見つけることがコスト最適化のポイントです。
無料利用枠
Lambdaには永続的な無料利用枠があります(12ヶ月限定ではありません)。
- 100万リクエスト/月
- 40万GB秒/月の実行時間
小規模なアプリケーションであれば、無料利用枠内で十分運用できることも多いです。
コールドスタートとは
Lambdaを使ううえで知っておくべき概念が「コールドスタート」です。
Lambda関数が最初に実行されるとき、実行環境の準備に時間がかかります。これがコールドスタートです。
| 状態 | 説明 | 起動時間 |
|---|---|---|
| コールドスタート | 新しい実行環境を作成 | 数百ミリ秒〜数秒 |
| ウォームスタート | 既存の実行環境を再利用 | 数ミリ秒 |
コールドスタート対策
- Provisioned Concurrency:事前に実行環境を準備しておく(有料)
- メモリを増やす:起動時間が短くなる傾向がある
- パッケージサイズを小さく:不要なライブラリを減らす
- SnapStart:Java、Pythonで利用可能な高速起動機能
レスポンス時間が重要なAPIでは、Provisioned Concurrencyの利用を検討しましょう。
Lambdaのよくあるユースケース
実際にLambdaがどのように使われているか、代表的なユースケースを紹介します。
1. サーバーレスAPI
API Gateway + Lambdaの組み合わせで、サーバーレスなREST APIを構築できます。
ユーザー → API Gateway → Lambda → DynamoDB
サーバーの管理なしで、スケーラブルなAPIを構築できます。
2. 画像処理
S3にアップロードされた画像を自動でリサイズ・変換する処理です。
画像アップロード → S3 → Lambda(リサイズ処理) → S3(変換後の画像を保存)
3. 定期バッチ処理
CloudWatch Eventsを使って、定期的にLambda関数を実行します。
CloudWatch Events(毎日9時) → Lambda → データベースのクリーンアップ
4. リアルタイムデータ処理
Kinesis Data Streamsと連携して、ストリーミングデータをリアルタイムで処理します。
IoTデバイス → Kinesis → Lambda → DynamoDB/S3
2025年のLambdaトピック
Lambdaは日々進化しています。2025年の主なアップデートを紹介します。
Lambda Durable Functions
2025年12月、Durable Functionsが発表されました。従来のLambdaは最大15分でしたが、この新機能により最大1年間にわたる長時間ワークフローを構築できるようになりました。AI関連の処理や、人間の承認待ちを含むワークフローに活用できます。
Lambda Managed Instances
2025年11月、Lambda Managed Instancesが発表されました。EC2インスタンス上でLambda関数を実行できる新機能です。サーバーレスの運用の簡単さを維持しながら、Savings Plansやリザーブドインスタンスを活用したコスト最適化が可能になりました。
Python 3.14、Java 25のサポート
2025年11月、Lambda は最新のランタイムであるPython 3.14およびJava 25をサポート開始しました。最新の言語機能を使用したサーバーレスアプリケーションを構築できます。
VS Codeからのリモートデバッグ
2025年7月、VS Codeからクラウド上のLambda関数を直接リモートデバッグできるようになりました。ブレークポイントや変数確認など、従来のデバッグ機能をそのまま利用でき、問題解決の時間が大幅に短縮されます。
Lambdaを始める基本的な流れ
Lambda関数を作成する基本的な流れを紹介します。
- 関数の作成:AWSコンソールで「関数の作成」をクリック
- ランタイムを選択:Python、Node.jsなどから選ぶ
- コードを書く:コンソール上で直接編集、またはzipファイルをアップロード
- トリガーを設定:API Gateway、S3などを設定
- IAMロールを設定:必要なAWSサービスへのアクセス権限を付与
- テスト実行:テストイベントで動作確認
AWSコンソールには、すぐに試せるサンプルコード(Blueprint)も用意されています。
まとめ
この記事で解説した内容をまとめます。
| 項目 | ポイント |
|---|---|
| Lambdaとは | サーバーを用意せずにコードを実行できるサービス |
| 特徴 | 使った分だけ課金、自動スケーリング、高可用性 |
| 対応言語 | Python、Node.js、Java、Go、Ruby、.NETなど |
| 主な制限 | 実行時間は最大15分、メモリは最大10GB |
| 料金 | リクエスト数+実行時間で計算、永続無料枠あり |
| 向いている処理 | API、ファイル処理、定期バッチ、イベント駆動処理 |
| コールドスタート | 初回起動時の遅延、Provisioned Concurrencyで対策可能 |
Lambdaを使えば、サーバー管理から解放され、アプリケーション開発に集中できます。まずは簡単な関数を作成して、サーバーレスの便利さを体験してみてください。
SKサービスでは未経験からのエンジニア転職をサポート
SKサービス株式会社では、完全未経験からエンジニアを目指す方を積極採用しています。
正社員として安定した環境で働きながら、さまざまなプロジェクトで実践経験を積むことができます。受託開発も手掛けており、スキルアップに応じてキャリアの幅を広げていける環境です。
「サーバーレスアーキテクチャを学びたい」「モダンな開発手法を身につけたい」という方、まずはお気軽にご相談ください。