先日、JavaでLambdaを作るエントリを書きましたが、今回、API Gatewayを使って、Lambdaで実装した処理をWebサービスとして公開したいと思います。
API GatewayはRESTfulなAPIを簡単に作れます。 RESTfulなので、まずはリソースを定義して、そのリソースに対するGET、POST、PUT、DELETEなどのメソッドを提供します。 後はどのバックエンドに接続するのかが、基本的な手順です。
手順はこちらをベースに進めます。
Lambda関数の作成
バックエンドはLambda関数を使います。 こちらで公開されているNode.jsのサンプルを、そのまま使って作成しておきました。
APIの作成

リソースの定義
最初にリソースを定義します。

- リソース名: 任意の名前です。ここでは
proxyとしています - リソースパス:
/proxy/{itemId}など個別のパターンを設定できますが、ここではワイルドカードになる{proxy+}を使います。これで、ルートのURL以下はなんでも受け取ります。
メソッドの定義
アクションで、メソッドの作成を選びます。
Lambda関数プロキシを選択します。
リージョンを選択して、Lambda関数名に何文字か入力すると、候補が表示されます。
ここまでの状態はこんな感じ。
APIのデプロイ
このままでは呼び出せないので、APIのデプロイを行います。
ステージというのが設定できて、ステージごとに認証やスロットリングの設定を変更することができます。
例えば、社内用のAPIと、取引先用のAPIなんかで分けることもできそうです。

APIの呼び出し
デプロイが完了すると、こんな感じのURLが割り当てられます。

このまま呼び出すと、
{"message":"Missing Authentication Token"}
エラーが返ってきます。 エラーメッセージの内容がわかりにくいのですが、上のURLはルートのもので、子リソース(ここではproxy)が定義されている場合には、そのまま呼び出すとこのエラーが返ってきます。
そこで、https://dummy.execute-api.ap-northeast-1.amazonaws.com/dev/proxyのような子リソースを含むURLで呼び出すと、
欲しかった結果を得られます。