Lambda 同時実行数(Concurrency)とは?予約・プロビジョンドの使い分け
Lambda 同時実行数は 「ある時点で並列に実行されている Lambda の数」。アカウント全体のデフォルト上限は 1,000 で、関数単位での予約・制限・常時ウォーム維持が可能。スケーリング暴走による下流リソース(DB 等)の過負荷を防いだり、コールドスタートを排除した...
Lambda が同時に実行できる関数インスタンス数の制御。スケール暴走防止と、コールドスタート回避の両面で重要。
1. 概要(端的に)
Lambda 同時実行数は 「ある時点で並列に実行されている Lambda の数」。アカウント全体のデフォルト上限は 1,000 で、関数単位での予約・制限・常時ウォーム維持が可能。スケーリング暴走による下流リソース(DB 等)の過負荷を防いだり、コールドスタートを排除したりする調整弁となる。
2. 何ができるか
- 同時実行数の上限制御:関数ごとに予約・制限を設定
- コールドスタート対策:Provisioned Concurrency で常時ウォーム
- 下流保護:DB に過剰な並列接続が走らないよう制限
- 重要関数の優先確保:他関数に同時実行枠を奪われない予約
3 種類の同時実行設定
| 種類 | 内容 | 用途 |
|---|---|---|
| Reserved Concurrency(予約) | 関数専用の同時実行枠を確保 | 重要関数の保証、暴走抑止 |
| Provisioned Concurrency(プロビジョンド) | 常時ウォームのインスタンス数を指定 | コールドスタート完全排除 |
| Unreserved(未予約) | 残った枠を関数間で共有 | 一般的な動作 |
3. 特徴
| 観点 | 特徴 |
|---|---|
| デフォルト上限 | アカウント・リージョン全体で 1,000 同時実行 |
| 上限引上げ | サポートケース起票で増枠可 |
| バースト制限 | 初期 500-3000(リージョンによる)、その後毎分 +500 |
| 予約の効果 | 「他関数の枠を奪わない」「上限を超えさせない」両刀 |
| プロビジョンドの料金 | 別途課金(ウォーム維持時間に対して) |
| モニタリング | CloudWatch メトリクス ConcurrentExecutions で可視化 |
バースト動作
新規呼び出しが急増した際、Lambda は瞬時に全数並列起動はしない。
- 初期バーストキャパシティ:500 〜 3,000(リージョンによる)
- その後:毎分 500 ずつ増加可
- 上限到達時は スロットリング(429) が発生
4. 仕組み
Lambda は 「同時に走っているインスタンス数」を秒単位でカウントし、設定された上限と照合する。
構成要素
- アカウント上限:全関数の同時実行合計(デフォルト 1,000)
- Unreserved Pool:予約していない関数で共有する枠
- Reserved Concurrency:特定関数に固定割当
- Provisioned Concurrency:常時ウォーム維持のインスタンス数
動作の流れ(予約あり)
- 関数 A に Reserved Concurrency = 100 を設定
- 関数 A は最大 100 並列まで実行可
- 101 番目以降のリクエストは 429 スロットリング
- 関数 A 以外の枠は Unreserved Pool(残り 900)から消費
スロットリング時の動作
呼び出しソース別に挙動が異なる:
| ソース | スロットル時の動作 |
|---|---|
| 同期(API Gateway/ALB) | 即時 429 エラー返却 |
| 非同期(S3/SNS) | 自動リトライ(最大 6 時間) |
| ストリーム(SQS/Kinesis) | 再試行で詰まり、メッセージが滞留 |
Provisioned Concurrency の仕組み
- 指定数のコンテナを 常時ウォームで保持
- コールドスタートゼロ
- ウォーム保持時間に対して別途課金(実行時間とは別)
- Auto Scaling と組み合わせて時間帯別に増減可
5. ユースケース
ユースケース 1:DB 接続数の制御
RDS の max_connections を超えないよう、Lambda 側で同時実行数を制限。
ユースケース 2:レイテンシ要件の厳しい API
Provisioned Concurrency で常時ウォーム → 100% ウォームスタートで数 ms 応答。
ユースケース 3:重要関数の優先保護
他関数のスケール暴走で 1,000 枠を使い切った時にも、重要関数を予約で保護。
ユースケース 4:外部 API のレート制限尊重
1 秒 10 リクエストまでの外部 API を呼ぶ Lambda の同時実行を 10 に制限。
ユースケース 5:コスト制御
予期せぬスパイクで Lambda が暴走しないよう、関数ごとに上限設定。
6. 関連用語
- Lambda — 同時実行制御の対象
- Lambda-Layers — 関連 Lambda 機能
- SQS — Lambda の同時実行と組み合わせて使うキュー
- CloudWatch — 同時実行数の監視
7. 関連サイト
AWS 公式
参考
🎓 試験での出題傾向
| 試験 | 重要度 | 主な出題パターン |
|---|---|---|
| CLF | 低 | 出題稀 |
| SAA | 中 | 「DB 接続が逼迫 → Lambda 同時実行数制限 + RDS Proxy」 |
| DVA | 高 | コールドスタート対策、Reserved/Provisioned の使い分け |
| SOA | 中 | 同時実行数モニタリング、スロットリング対応 |