◾️ はじめに
現在、CDKを書くために、AWSの様々なサービスを使用しています。
その中で、API GatewayのRest APIを使用し、Lambda関数を実行しようとしましたが、ステージの設定が必要なことや、デプロイが必須など構築が煩雑な点がありました。そこで、より簡単に利用できるHTTP APIを採用しましたが、両者の違いを深く理解せずに進めたため、費らずの時間を消費してしまいました。
この記事では、Rest APIとHTTP APIの違いを整理し、HTTP APIを使ってLambda関数を実行する手順を紹介します。Rest APIとHTTP APIのどちらを選ぶか迷っている方の参考になれば幸いです。
◾️ HTTP APIとRest APIの違い
HTTP API | Rest API | |
---|---|---|
説明 | シンプルなAPIを低レイテンシー&&低コストで提供する | 高度なAPI管理や制御などの様々な機能を提供する |
ステージ設定 |
不要 ※ステージを作成しなくてもデフォルトステージが自動で適用される |
必要 |
リクエスト料金(100万回あたり) | $1.00(最初の3億回) | $3.50(最初の3億回) |
統合対象 | Lambda、HTTP バックエンド | Lambda、HTTP バックエンド、Mock、AWSのサービス、VPCリンク |
データのキャッシュ | 未対応 | 対応(追加料金あり) |
VPCリンク(Private API) | 未対応 | 対応 |
APIキー・使用量プラン | 未対応 | 対応 |
リクエスト料金(100万回あたり)が、REST APIはHTTP APIの3.5倍の料金がかかるのは、Rest APIは、APIキーの管理やVPCリンク、データキャッシュなどの追加機能を備えているため、より多機能な分だけ料金が高くなっていると考えられます。
また、HTTP APIは、不要な機能を削り、よりシンプルにしたもののため、シンプルなAPIを作成したい場合に利用するのだおすすだと思います✨
◾️ AWS API GatewayのHTTP API + Lambda関数の実行手順
※今回、Lambda関数についての詳細説明は省きます。
【ステップ 1】 Lambda関数を作成する
以下を設定し、関数の作成
ボタンクリックする
- オプション:一から作成
- 関数名:例)
apiGatewayHandler
- ランタイム:Node.js 22x
- アーキテクチャ:x86_64
【ステップ 2】 API Gatewayで以下を設定する
1. APIを作成する
- APIタイプ選択:
HTTP API
- 統合を設定:
2. ルート設定
5. URLにアクセスする
- デフォルトのエンドポイントにリソースパスを加えて
/apiGatewayHandler
アクセスする
https://{api-id}.execute-api.{region}.amazonaws.com/apiGatewayHandler
Lambda関数作成時に、デフォルトで作成されるbodyのメッセージが返ってきていたら成功です✨
"Hello from Lambda!"
◾️ Rest APIを使用して設定する場合
※Lambda関数は、先ほど作成したapiGatewayHandler
を使用します。
1. APIを作成する
2. メソッドを作成する
以下を設定し、メソッド作成
ボタンをクリックする
- メソッドタイプ:
ANY
- 統合タイプ:
Lambda関数
- Lambda関数:
- Lambda関数を作成したリージョン選択:
ap-northeast-1
- 関数名選択:
apiGatewayHandler
- Lambda関数を作成したリージョン選択:
3. ステージを設定する
APIをデプロイ
ボタンをクリックし、APIをデプロイするステージを作成する
以下のように表示されていれば成功です✨
{"statusCode":200,"body":"\"Hello from Lambda!\""}
◾️ HTTP APIとRest API比較(デプロイやステージの扱い)
HTTP API
-
ステージの概念が簡略化
- 明示的にステージを作成しなくてもデフォルトステージが自動で適用
- URLに
dev
やprod
などのステージ名が不要
※ステージ設定を削除してしまうと、エンドポイント (/) にアクセスできなくなるため、結果として404 Not Found
になる!
https://{api-id}.execute-api.{region}.amazonaws.com/
-
デプロイが自動
- 設定を変更すると自動で反映されるため、明示的なデプロイ作業が不要
- 一部の変更(Lambda統合など)は反映に時間がかかることがある
REST API
-
ステージ(Stage)が必須
- ステージを作成し、デプロイしないと変更が反映されない
- デプロイのたびに明示的に新しいバージョンをステージに適用する必要がある
-
デフォルトURLの形式
- {stage}(例: dev, prod など)がURLの一部として必須
https://{api-id}.execute-api.{region}.amazonaws.com/{stage}/
◾️ おわりに
最後までお読みいただきありがとうございます。
HTTP API
とRest API
の違いを理解し、適切に選択することが重要です。
- シンプルなAPIを低コスト・低レイテンシーで提供したいならHTTP API
- 細かい制御やVPCリンクを利用する必要があるならREST API
この記事が、適切なAPI Gatewayの選択と実装の参考になれば幸いです!