Amazon API Gateway の Lambda プロキシ統合 は、API Gateway から AWS Lambda 関数へリクエストをそのまま渡し、Lambda のレスポンスをそのままクライアントへ返す シンプルかつ柔軟な統合方式 です。
✅ 概要:Lambda プロキシ統合とは
- API Gateway から Lambda に HTTP リクエスト情報(メソッド、パス、ヘッダー、クエリなど)を JSON 形式で一括転送
- Lambda はその JSON をパースし、適切な処理をして 構造化された JSON レスポンスを返す
- API Gateway 側のマッピングテンプレート設定などは 不要
🔁 リクエストとレスポンスの流れ
🔹 API Gateway → Lambda(入力イベント)
Lambda 関数には、以下のようなイベント JSON が渡されます:
{
"resource": "/example",
"path": "/example",
"httpMethod": "GET",
"headers": { "Host": "...", "User-Agent": "..." },
"queryStringParameters": { "key": "value" },
"pathParameters": null,
"body": null,
"isBase64Encoded": false
}
🔹 Lambda → API Gateway(出力)
Lambda 関数の返却は、以下の形式で返す必要があります:
{
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": "{\"message\": \"Hello from Lambda!\"}",
"isBase64Encoded": false
}
🛠 メリット
特徴 | 説明 |
---|---|
シンプル | API Gateway 側でマッピングテンプレートの設定不要 |
拡張性 | Lambda でリクエストを完全に制御できる(自由なパース、認証など) |
統一フォーマット | 単一形式のイベントで全ての情報を取得できる |
モダンな構成に最適 | REST API や HTTP API 両方で利用可能 |
⚠️ 注意点
注意点 | 説明 |
---|---|
Lambda 側の実装責任が大きい | リクエストパースやエラーハンドリングなどを Lambda 内で全て行う必要がある |
レスポンス形式は固定 | 特定の JSON 形式でないと API Gateway で正常に処理されない |
💡 利用例(Node.js)
exports.handler = async (event) => {
console.log("Event:", event);
const response = {
statusCode: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message: "Hello from Lambda!" }),
};
return response;
};
🧩 Lambda プロキシ統合 vs 非プロキシ統合
項目 | Lambda プロキシ統合 | 非プロキシ統合 |
---|---|---|
リクエスト形式 | 自動で構造化 JSON イベント | マッピングテンプレートで定義必要 |
レスポンス形式 | 固定の JSON 構造が必要 | フレキシブル(テンプレートで変換) |
管理場所 | Lambda 中心 | API Gateway 中心 |
🚀 よく使われるユースケース
- シンプルな API(GET/POST)を Lambda 関数で完結させたいとき
- Lambda@Edge や API Gateway + Lambda のサーバーレス構成
- 認証情報やパス、クエリ文字列をまとめて受け取りたいとき