4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

API GatewayのHTTP APIとREST APIの違いを比較し、Lambda関数を実行する

Last updated at Posted at 2025-03-31

◾️ はじめに

 現在、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

スクリーンショット 2025-03-22 20.18.55.png

【ステップ 2】 API Gatewayで以下を設定する

1. APIを作成する

  • APIタイプ選択:HTTP API
  • 統合を設定:
    • API名:HTTP API
    • 統合を追加
      • 統合:Lambda
      • AWS リージョン:ap-northeast-1(Lambda関数を作成したリージョン選択)
      • Lambda関数:apiGatewayHandler(Lambda関数を作成した際の関数名を選択)
        スクリーンショット 2025-03-30 14.50.05.png

2. ルート設定

  • メソッド:例)ANY
  • リソースパス:/apiGatewayHandler
  • 統合ターゲット:apiGatewayHandler
    スクリーンショット 2025-03-30 14.51.46.png

3. ステージを定義
デフォルトで設定されているまま次へ
スクリーンショット 2025-03-30 15.14.19.png

4. 作成
スクリーンショット 2025-03-30 15.17.24.png

5. URLにアクセスする

  • デフォルトのエンドポイントにリソースパスを加えて/apiGatewayHandlerアクセスする
https://{api-id}.execute-api.{region}.amazonaws.com/apiGatewayHandler

スクリーンショット 2025-03-30 15.17.58.png
Lambda関数作成時に、デフォルトで作成されるbodyのメッセージが返ってきていたら成功です✨

"Hello from Lambda!"

◾️ Rest APIを使用して設定する場合

※Lambda関数は、先ほど作成したapiGatewayHandlerを使用します。

1. APIを作成する

  • APIタイプ選択:Rest API
  • 新しいAPI選択
  • API名:Rest API
    • APIエンドポイントタイプ(どこのエンドポイントからAPIにアクセスできるか設定する):リージョン
      スクリーンショット 2025-03-30 14.37.38.png

2. メソッドを作成する
以下を設定し、メソッド作成ボタンをクリックする

  • メソッドタイプ:ANY
  • 統合タイプ:Lambda関数
  • Lambda関数:
    • Lambda関数を作成したリージョン選択:ap-northeast-1
    • 関数名選択:apiGatewayHandler

スクリーンショット 2025-03-22 21.52.41.png

3. ステージを設定する
APIをデプロイボタンをクリックし、APIをデプロイするステージを作成する
スクリーンショット 2025-03-22 22.02.19.png

  • ステージ:*新しいステージ*
  • ステージ名:api
    スクリーンショット 2025-03-22 22.00.43.png

4. 作成されたURLにアクセス
スクリーンショット 2025-03-22 22.04.49.png

以下のように表示されていれば成功です✨

{"statusCode":200,"body":"\"Hello from Lambda!\""}

◾️ HTTP APIとRest API比較(デプロイやステージの扱い)

HTTP API

  • ステージの概念が簡略化
    • 明示的にステージを作成しなくてもデフォルトステージが自動で適用
    • URLにdevprodなどのステージ名が不要

※ステージ設定を削除してしまうと、エンドポイント (/) にアクセスできなくなるため、結果として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 APIRest APIの違いを理解し、適切に選択することが重要です。

- シンプルなAPIを低コスト・低レイテンシーで提供したいならHTTP API
- 細かい制御やVPCリンクを利用する必要があるならREST API

この記事が、適切なAPI Gatewayの選択と実装の参考になれば幸いです!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?