を書いた当時は、API Gateway のバックエンドとして Lambda を使う場合、Lambda 関数を定義して、統合リクエスト・統合レスポンスの設定をしていました。 でも、この少し後に、 Lambda プロキシ統合という便利な機能がリリースされていたことを知りました。
リリース時の記事がこちら。
Amazon API Gateway に API 設定を簡素化する 3 つの新機能を追加
(ずいぶん前ですが)この Lambda プロキシ統合を試したときに感じたことをメモしておきます。 ・・・今回は半分愚痴ですので、軽く流してください。
実現方法
自分では新しく調べたことは何もなくて、下記記事のとおり行ったら、すんなりとできました。
まとめていただいて、ありがたいです。
ドキュメントが今一つよくわからない
で、この記事で書きたかったのは、こちらのほうです。
結論からいうと、API Gateway の Lambda プロキシ統合の部分のドキュメントはちょっとわかりにくいかと思います。
まず、用語を整理しましょう。API Gateway で Lambda 関数を使う場合のことを Lambda 統合 と呼んでいるようです。 で、その Lambda 統合の中に
- Lambda プロキシ統合
- Lambda カスタム統合
があるという形のようです。こちらの記事に説明がありました。
Lambda カスタム統合というのは、既存の方法で、自前で統合リクエスト・統合レスポンスのマッピングを行うという方法です。
で、前述の新機能のリリース記事にもあるように、 API Gateway の便利な機能として
- greedy (グリーディー)パス
- ANY メソッド
- Lambda プロキシ統合
の3つがあります。 このうち、greedyパスで定義されるAPIリソースのことを、『プロキシリソース』と呼んでいるようです。 こちらの記事でそのことが書かれています。
ここで、プロキシと名の付くのが2つ出てくるので非常にややこしい。 もっとも、ドキュメントをよく読めば、上記の3つの機能は独立した機能であり、個別に使うことが可能、とあるのですが、このことがなかなか伝わってきませんでした。
サンプル
あと、Lambdaプロキシ統合について書かれているサンプルが、プロキシリソースを対象にしたものばかりで、単にメソッドに対して Lambdaプロキシ統合を行いました、 というのがないようです。
- Lambda プロキシ統合で API Gateway API をビルドする - Amazon API Gateway
- API Gateway の Lambda プロキシ統合をセットアップする - Amazon API Gateway
後者のドキュメントをよくよめばいいんでしょうが、サンプル見るほうが手っ取り早かったりもしますしね。
ごく簡単な設定だし、四の五の言わず Lambdaプロキシ統合を試せば、十分、分かるんですけど、ドキュメントはもう少しなんとかしてほしいものです。
補足
Lambdaプロキシ統合時のCORSを有効にする方法について、ドキュメントではここで触れてます。
API Gateway リソースの CORS を有効にする - Amazon API Gateway
Lambdaプロキシ統合の場合、バックエンド(つまりLambda関数)内でレスポンスヘッダを指定してやる必要があるということを覚えておけば良さそうです。