← AWSサービスの内部原理 コース
40. 統合タイプ — プロキシは素通し、非プロキシは翻訳
API Gateway の5つの統合タイプは、同じ4段パイプラインの「真ん中2段」をどう扱うかだけの違い——それを図で追っていきます。
① 土台はいつも同じ「4段パイプライン」
クライアント
バックエンドへ
① メソッドリクエストクライアントからの入力を受け取る
② 統合リクエストバックエンド向けに整える
ここが分岐点生の応答
バックエンドLambda / AWSサービス / HTTP
HTTPレスポンス
③ 統合レスポンス生の応答を受ける
ここも分岐点④ メソッドレスポンスクライアント向けに整える
クライアントへ返却
- 名前の末尾に PROXY が付く → 真ん中2段を素通し(パススルー)
- PROXY が付かない → 真ん中2段で翻訳(変換)を行う
- プロキシ=配管をまっすぐ通す / 非プロキシ=途中に変換器を挟む
リクエストは必ずこの4段を通る。5つの統合タイプの違いは、真ん中2段(統合リクエスト/統合レスポンス)を自分で書くか書かないか、の一点に集約される。
② AWS_PROXY:素通しだが「プロトコル変換」は起きている
HTTPリクエストヘッダー・パス変数・クエリ・ボディ
入力としてそのまま渡す
決まったJSONイベントあらゆる情報を1つの形式に
決まった出力形式を返す
Lambda 関数変換ロジックはコード側にある
API Gateway が HTTPレスポンスに組み立て
statusCode / headers / body決まった出力オブジェクト
クライアント
- 公式:「統合リクエストも統合レスポンスも設定しない。受信リクエストをそのまま Lambda への入力として渡す」
- 素通し=変換が消えるのではなく、変換ロジックが API Gateway の設定側から Lambda のコード側へ移っただけ
- HTTP という通信の型 → イベントオブジェクトを引数に取る関数呼び出し、というプロトコル変換
統合リクエスト/レスポンスは一切設定しない。だが HTTP がそのまま流れるのではなく、API Gateway が決まった JSON イベントに詰め替える——HTTP をイベント駆動の関数呼び出しへ変換している。
③ 非プロキシ(AWS / HTTP):真ん中2段を自分で書く
メソッドリクエスト
翻訳された呼び出し
統合リクエスト自分で書く
データマッピング必須生の応答
DynamoDBAWS統合
SQSAWS統合
任意のHTTPエンドポイントHTTP統合
マッピングテンプレート
統合レスポンス自分で書く
データマッピング必須メソッドレスポンス
- AWS 統合=「API が AWS のサービスアクションを公開できるようにする」もの
- Lambda カスタム統合は AWS 統合の特殊例(統合先が Lambda の関数呼び出しアクションに固定)
- 利点:似た入出力形式なら複数バックエンドでテンプレートを再利用でき、バックエンドを変換ロジックから切り離せる
マッピングテンプレートで JSON を別の形の JSON に組み替える(直列化)。AWS 統合なら HTTP リクエストが DynamoDB や SQS の API 呼び出しへ翻訳される。
④ MOCK:バックエンドに行かず、その場で答える
クライアント
固定応答を返却
API Gatewayあらかじめ決めた応答をその場で返す
バックエンド先送りされない=到達しない
存在しなくてよいクライアントへ即応答
- 実例1:CORS プリフライトに応じる OPTIONS メソッドの応答(コンソールが MOCK 統合で自動生成)
- 実例2:エラー時に返るゲートウェイレスポンスも MOCK 統合の一例
- バックエンドに触れずヘッダーや固定応答だけ返したい場面の最短経路
リクエストをバックエンドへ先送りせず、API Gateway 自身がレスポンスを返す。テストで使う「スタブ/モック」の考え方が統合タイプとして製品化されたもの。
⑤ 選択の軸は2つ:「変換を誰が書くか」×「バックエンドに行くか」
AWS_PROXY素通し → Lambda
変換はコード側HTTP_PROXY素通し → 任意のHTTP
そのまま流す非プロキシ系:真ん中2段を自分で書く
AWS翻訳 → AWSサービス
変換は設定側HTTP翻訳 → 任意のHTTP
マッピングテンプレートMOCKどこにも行かない。API Gateway 自身が答える
- Lambda を素早くつなぐ → AWS_PROXY
- 複数バックエンドで変換を共通化したい → 非プロキシ(AWS / HTTP)
- バックエンド抜きで応答を返したい → MOCK
5タイプはすべて同じ4段パイプラインの上にあり、真ん中2段の扱いを変えているだけ。この2軸で見れば暗記ではなく原理で選べる。