概要
- ApiGatewayで新たにAPIを登録しようとした時にAPIタイプの選択画面でどれを選べばよいか迷ったので簡単にまとめてみる。
ApiGatewayのAPIタイプ
-
ApiGatewayでは下記4種のAPIタイプを選択する事ができる。
- HTTP API
- WebSocket API
- REST API
- REST API(プライベート)
-
AWS側も迷うことを想定してそれぞれ選択画面で「こんなAPIを提供したいならこれ!」という具合に説明は記載してくれている。しかしもうちょっと深い情報がほしいのでそれぞれ調べてみることにした。
WebSocket API
- 順番が前後して申し訳ないが、まずはWebSocket APIをまとめてみる。
- 俗に言うWebSocketのAPIと同じ意味である。
- 対話的な通信を行うためのAPIを実装したい場合、こちらを選択する。
HTTP API
- RESTful APIである。設定が基本的なものしか選べない。
- エンドポイントタイプは「リージョン別」のみ選択可能
- セキュリティー(悪意のあるアクセスからのブロック)は「相互TLS認証」のみ選択可能
- 認証(APIのアクセス制限)は「IAM」「Amazon Cognito」「AWS Lambdaを使ったカスタム認証」「JWT」から選択可能
- API管理は「カスタムドメイン」のみ選択可能
- などなど上記に記載したもの以外にもいくつかの設定項目で機能が限定されている。
- 使える機能が少ない分、すこし料金が割安らしい。
REST API
- RESTful APIである。設定に自由度がある。
- エンドポイントタイプは「リージョン別」「エッジ最適化」「プライベート」から選択可能
- セキュリティー(悪意のあるアクセスからのブロック)は「相互TLS認証」「バックエンド認証用の証明書」「AWS WAF」から選択可能
- 認証(APIのアクセス制限)は「IAM」「Amazon Cognito」「AWS Lambdaを使ったカスタム認証」「リソースポリシー」から選択可能
- API管理は「カスタムドメイン」「APIキー」「クライアントごとのレート制限」「クライアントごとの使用量調整」から選択可能
- そのほかにも設定項目があり、各設定とも柔軟な設定が可能になっている。
REST API(プライベート)
- こちらはREST APIの設定項目をそのままに設定したVPCからのみアクセス可能なAPIを作りたい場合に選択する。
HTTP APIとREST APIで迷ったら
- 下記の参考文献のURL先を確認し、設定が限定されているHTTP APIの内容を見て、自身が提供したいAPIの仕様を満たせているならHTTP APIで良いと思う。
- 一つでも満たせていないならREST APIを選ばないといけない。
- しかし、実装途中で仕様が変わる可能性もあるのでREST APIを選択しておくことが無難だと思う。
- ただ、HTTP APIでしか選択できない設定項目も存在するので注意すること。
参考文献