AWS DVA / 第2章

CHAPTER 02 / D1 / D4

Lambda と API Gateway

呼び出し方式・同時実行・APIの入口を理解する。

一読の目安 30分図・具体例・確認問題

01 / Lambdaは「誰が呼ぶか」で動きが変わる

Lambdaはイベントを受け取り、ハンドラーを実行します。イベントは、APIリクエスト、S3へのファイル追加、SQSのメッセージなどです。最初に同期・非同期・イベントソースマッピングのどれかを見分けます。

呼び方代表例結果と失敗の扱い
同期呼び出しAPI Gateway → Lambda呼び出し元が結果を待つ。関数エラーの再試行は呼び出し元の責任
非同期呼び出しS3通知 / SNS → LambdaLambdaがイベントをキューへ受け付ける。関数エラーは既定で追加2回再試行
イベントソースマッピングSQS / Kinesis / DynamoDB Streams → LambdaLambda側がポーリングしてバッチを渡す。再試行・破棄はソースの設定と種類に依存

非同期呼び出しのDestinationsは成功時・失敗時の実行記録を後続サービスへ送れます。非同期用DLQは処理できなかったイベントを退避します。スロットリングやサービスエラーの再試行は関数エラーの「2回」と同じ規則ではなく、イベントの最大有効期間などの設定も関係します。

公式資料:Lambda の再試行

02 / 実行環境と設定を押さえる

設定・概念意味判断のポイント
メモリメモリ量に応じてCPU性能も変わる増やすと時間が短くなる場合がある。実測で料金と時間を比較
タイムアウト実行を許す最大時間下流呼び出しのタイムアウトも合わせて設計。Lambdaの上限は15分
環境変数環境ごとの設定値テーブル名などを注入。秘密値の保管・ローテーションは専用サービスを検討
Layer共通ライブラリ等の共有単位実行するコードの互換性・パッケージのバージョンを管理
Extensionログ・監視などの機能を追加関数の処理と別の補助機能。リソース消費も考える
バージョン / エイリアス公開済みバージョンは変更不可。エイリアスは参照先を持つ名前prodをv10へ向ける。加重エイリアスで一部をv11へ送る

初回やスケール時には、実行環境の初期化によるコールドスタートが起きることがあります。SDKクライアントの初期化をハンドラー外へ置くと、環境再利用時の無駄を減らせます。ただし、利用者固有のデータをグローバル変数に残さないようにします。

03 / 同時実行数と起動の速さを分ける

Reserved と Provisioned の違いReserved concurrencyは同時実行枠の確保と上限です。Provisioned concurrencyは初期化済みの実行環境を用意して起動遅延を抑えます。リクエスト到着率 × 実行時間Reserved使える同時実行枠下流DB接続数に上限Provisioned初期化済み環境を用意起動待ちを減らす
Reserved と Provisioned の違い — Reserved concurrencyは同時実行枠の確保と上限です。Provisioned concurrencyは初期化済みの実行環境を用意して起動遅延を抑えます。

安定した負荷なら、同時実行数の目安は1秒あたりの要求数 × 平均実行時間(秒)です。毎秒200件、平均0.25秒なら約50。ただし、ピークや処理時間のばらつきを考える余裕が必要です。

要件まず検討する設定
他の関数に枠を使われたくない / 下流DBへの負荷を制限したいReserved concurrency。枠を確保し、同時実行の上限にもする
初期化待ちを減らし、対話APIの応答時間を安定させたいProvisioned concurrency。追加料金と必要な時間帯・個数を評価

公式資料:同時実行の設定

04 / API Gatewayの責任

API GatewayはHTTPリクエストの受付、認証連携、スロットリング、ルーティングなどを担当します。REST APIとHTTP APIの機能差を区別し、設問の要件で選びます。

要件選択の目安
APIキー・使用量プラン、リクエスト検証、組み込みキャッシュREST APIの機能を検討
比較的単純なHTTPバックエンド連携、標準JWT authorizerHTTP APIの機能を検討
ブラウザから別オリジンのAPIを呼ぶCORSの許可元・メソッド・ヘッダーを設定。CORSは認証の代わりにはならない
利用者ごとの認可Cognito / JWT authorizer / Lambda authorizer / IAMなど、API種類に合う方式
リクエスト急増スロットリングとバックエンドの容量を確認。APIキーをユーザー認証の代替にしない

Lambdaプロキシ統合では、イベントの形式とレスポンスの形式を合わせます。REST APIの典型的な戻り値は、statusCode、headers、文字列化したbodyです。HTTP APIのペイロードバージョンとは差があるため、統合設定を確認します。

REST API Lambda プロキシ統合:レスポンス例
import json

def handler(event, context):
    return {
        "statusCode": 200,
        "headers": {"Content-Type": "application/json"},
        "body": json.dumps({"message": "ok"})
    }

公式資料:REST API と HTTP API の比較

05 / VPC接続でつまずく理由

プライベートなRDSなどへ接続するためにLambdaをVPCへ接続します。ここでパブリックサブネットを選んでも、LambdaにパブリックIPが付いてインターネットへ出られるわけではありません。

IPv4でインターネット上のAPIへ出るなら、通常はプライベートサブネットからNAT Gateway等を通る経路を使います。S3・DynamoDBなど対応するAWSサービスへの通信にはVPCエンドポイントも選択肢です。ルート、セキュリティグループ、DNS、IAMをそれぞれ確認します。

公式資料:VPC 接続 Lambda のインターネットアクセス

調査練習:突然タイムアウトする

LambdaをVPCへ接続した直後、外部の決済APIだけがタイムアウトした。最初にどこを見る?

考え方・解答例

サブネットから外への経路、NAT Gateway等、セキュリティグループの送信、DNSを確認します。RDSへ接続できても外部へ出る経路があるとは限りません。タイムアウト値だけを増やしても経路は作れません。

06 / 確認問題

QUESTION 2-1 · 単一選択SQSをイベントソースとするLambdaが失敗した。再試行を考えるときに最も関係する設定は?
解答・解説を読む

正解:C
SQSはイベントソースマッピングで処理します。非同期Invokeのキューとは異なり、失敗するとメッセージが再び可視になります。

QUESTION 2-2 · 単一選択対話APIでコールドスタートの遅延を減らしたい。直接その目的に対応するのは?
解答・解説を読む

正解:B
Provisioned concurrencyは初期化済みの環境を用意します。Reserved concurrencyは枠の制御で、初期化済みであることを保証しません。

07 / この章の到達点

上のチェックは、このページでの振り返り用です。章単位の進捗は下のボタンで記録できます。

公式資料

内容確認日:2026年11月8日。仕様の詳細や更新情報は、各公式資料で確認できます。

おつかれさまでした。

理解を確認できたら、章の進捗を記録できます。