【新機能】Amazon API Gatewayの設定方法にcatch-allパス変数、ANYメソッド、Lambdaとの新しいプロキシ連携の3機能が追加。
こんにちは、せーのです。今日はAPI Gatewayに追加された3つの新機能をご紹介します。 今回の新機能はいずれも「APIを簡単に、手早く作りたい」という方たち向けの機能となっております。3つもあるので実際にやってみながらご紹介することにします。
やってみた
まずはAPIをひとつ作ります。
次にリソースを一つ作ります。
ここからが一つ目の新機能となります。
Catch-allパス変数
まず一つ目は「Catch-allパス変数」です。これは本来個別に規定されているAPIのパスをまとめて設定してしまう、というざっくり時短な機能です。
このように{proxy+}というパスを設定するとそのリソースより深いパスは全てここでキャッチしてくれます。上の例でいうと/test/{proxy+}となるので/test/1でも/test/seinoでも/test/seino/updateでも全てここで処理してくれます。
ANYメソッド
上のCatch-allパス変数をセットすると自動的にANYメソッドが追加されます。これはその名の通り全てのメソッドの代わりにこのメソッドが反応するというものです。GET、POST、PUTなど普通はそれぞれメソッドを規定する必要があるのですが、ANYメソッドを設定しておけばそれでOK、となります。なんて簡単なんでしょう。
Catch-allパス変数のときだけではなく、普通のリソースに対してもANYメソッドは設定できます。ANYメソッドを設定すると他に設定されているメソッドはANYメソッドの処理に上書きされます。
新Lambda連携 & HTTP Proxy連携
最後はLambdaとの新しい連携機能です。といっても特別な設定が加わったわけではなくて、今までAPI GatewayとLambdaを連携させるにはmapping templateというものを書いて、入ってきたデータをどのようにLambdaに渡すか、という定義をしていたのですが、Lambda連携用のテンプレートが内蔵され、データはもちろんヘッダやクエリまで自動的にマッピングしてLambdaに渡してくれるようになりました。
BluePrintでAPI Gateway系のものは全てその実装に変わっているのですぐに使うことができます。
今回はドキュメントにあるProxy連携のコードをそのまま使ってみたいと思います。
これはnameというクエリを拾ってきてHello, [name]と返す、というものですね。
ちなみにもう一つのHTTP Proxyというのは、このAPIに来たリクエストをそのまま他のHTTPエンドポイントに向けて投げる、というものです。今回のアップデートではこのHTTP Proxyにもmappingや転送設定なしでそのままぶん投げる「HTTP Proxy連携」という機能が追加されました。
この真ん中のチェックボックス、これが新機能です。これをチェックすることでマッピングを書く必要がなくなります。 ちなみにこのHTTPエンドポイント先はEC2以外にもオンプレや既存のAPIエンドポイントにも使えます。使い勝手が広いですね。
最後にAPI GWに作ったLambdaを連携させます。
これでできあがりです。複雑な設定がなくなって簡単になりましたね。
ではテストしてみます。nameのクエリを入れて流してみます。
Hello, Tsuyoshiと返ってきているのが見えます。成功です。
まとめ
いかがでしたでしょうか。API Gatewayは便利なサービスである一方設定が難しい、という面がありましたが、今回のこのアップデートで誰でも簡単にAPIが作成出来るようになったと思います。是非お試しください。
参考リンク
- https://aws.amazon.com/jp/about-aws/whats-new/2016/09/aws-lambda-simplifies-amazon-api-gateway-integration/
- https://aws.amazon.com/jp/blogs/aws/api-gateway-update-new-features-simplify-api-development/
- https://aws.amazon.com/jp/about-aws/whats-new/2016/09/amazon-api-gateway-introduces-3-new-features-to-simplify-api-configuration/