この記事は
[AWS] Lambda + API Gateway でサーバーレスWeb APIを作る ①Lambdaファンクション篇の続きです。
HTTP APIとREST API
Amazon API GatewayではHTTP APIとREST APIという2種類のAPIを作成できます。
違いは公式を見てみてください。
HTTP API と REST API 間で選択する
- HTTP APIの方が安価
- REST APIの方が現状では機能が多い
- OIDC/OAuth 2.0認証をサポートしているのはHTTP APIだけ
今回のゴールはどちらの方法でも達成できそうです。今回はHTTP APIで実装してみます。
今回の実装
今回は、API GatewayのHTTP APIを使って前回作成したLambdaファンクションintroduceMyself
へのHTTP経由での入口を作成します。
HTTP APIを作成
Amazon API Gatewayの画面でCreate API
を押す。
-
Add integration
ボタンで統合先にLambdaを指定、呼び出したいRegion
とLambda Function
を選択します。(複数追加可能) - API名を決めます。
-
Next
ボタンを押します。
Add route
でルートを追加します。メソッド、リソースパス、統合ターゲット(呼び出すファンクション)を指定します。
今回はintroduceMyself
にGETとPOSTメソッドのルートを作成します。
入力したらNext
を押します。
次にデプロイするステージを決めます。
本番環境はprod
、開発環境はdev
といったようにデプロイする環境を分けることができます。
今回はdev
という名前のステージを追加してデプロイします。
Auto-deploy
をオンにしておくとAPIの修正後に手動でデプロイボタンを押さなくてもデプロイされます。
内容を確認してCreate
ボタンを押します。
APIを呼び出してみる
REST APIではコンソール内でAPIのテストが実行できますが、HTTP APIではできないようなのでGETとPOSTでそれぞれAPIを呼び出してみようと思います。
GET
https://xxxxxxxxxx.execute-api.us-west-2.amazonaws.com/development/introduce/myself?name=Akumachan&age=10031
POST
curl -X POST -H "Content-type: application/json" -d '{"name": "Akumachan", "age": "10033"}' https://xxxxxxxxxx.execute-api.us-west-2.amazonaws.com/development/introduce/myself
呼べました!