REST API と HTTP API の使い分け難易度 標準無料
開発者が、Lambda関数をバックエンドにしたシンプルなプロキシ統合のAPIを新規構築する。要件は次の通り。
- コストとレイテンシを最小化したい(リクエスト単価を抑えたい)
- JWTベースの認可(OIDC/OAuth 2.0)をAPI Gateway側で直接検証したい
- リクエスト/レスポンスのマッピングテンプレートによる複雑な変換やAPIキーによる使用量プランは不要
最も適切なAPI Gatewayのタイプを選べ。(単一選択)
- AREST APIを作成し、Lambdaプロキシ統合とCognitoオーソライザーを設定する
- BHTTP APIを作成し、Lambdaプロキシ統合とJWTオーソライザー(Cognito/OIDC)を設定する
- CWebSocket APIを作成し、$connect/$disconnect/$defaultルートでLambdaを呼び出す
- DREST APIを作成し、リクエスト単位でAPIキーを必須にして使用量プランでアクセスを制御する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:BAI作成・独立検証済
解説
API GatewayにはREST API・HTTP API・WebSocket APIの3種類があり、 要件次第で最適なタイプが変わる。
- HTTP API:Lambdaプロキシ統合やHTTPバックエンドへのシンプルなプロキシに最適化されており、 REST APIよりも低レイテンシ・低コスト(最大で約70%安価)である。 JWTオーソライザーをネイティブでサポートし、Cognito/Auth0等のOIDC/OAuth 2.0トークンを追加のLambdaコードなしで検証できる。
- REST API:マッピングテンプレート(VTL)による詳細なリクエスト/レスポンス変換、APIキー・使用量プラン、 リクエスト単位のキャッシュ、AWS WAF直接統合など高度な機能が必要な場合に選ぶ。その分コスト・レイテンシは高め。
- WebSocket API:双方向のリアルタイム通信(チャット等)向けで、本設問の要件(シンプルなプロキシ+JWT認可)には過剰。
本設問はマッピングテンプレートもAPIキーも不要でコスト最小化・JWT認可が要件のため、HTTP APIが最適解となる。
- AREST APIはHTTP APIより高コスト・高レイテンシであり、マッピングテンプレートやAPIキーが不要な本要件にはオーバースペック。
- CWebSocket APIは双方向のリアルタイム通信向け。今回は通常のリクエスト/レスポンス型プロキシであり用途が異なる。
- D要件はAPIキー・使用量プランを不要としており、JWT認可でのユーザー単位の検証が目的。APIキーはクライアント識別・スロットリング用途でありユーザー認可の代替にはならない。
ひっかけ: 「API GatewayといえばREST API」という思い込みで安易にREST APIを選ぶのが典型的な誤り。
マッピングテンプレート・APIキー・リクエストキャッシュなど高度機能が不要でコスト最小化が優先ならHTTP APIという判断基準を押さえる。
またWebSocket APIは双方向リアルタイム通信専用であり、通常のリクエスト/レスポンス型APIには使わない。
公式ドキュメント・関連Amazon API Gateway Developer Guide ― Choosing between HTTP APIs and REST APIs↗Amazon API Gateway Developer Guide ― Working with JWT authorizers for HTTP APIs↗
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)