亀のコツコツクラウドインフラ

2025年1月29日

API Gateway×LambdaでHTTP APIを構築する方法を解説! 

はじめに

REST APIよりHTTP APIの方が安いので、場合によってはHTTP APIを使用しましょう。

以下のような方におすすめの内容です。

  • AWSでAPIを作ってみたい
  • サーバレスに興味がある

この記事ではAPI GatewayとLambdaを使用して、APIでLambda関数を実行する方法をご紹介します。
最後にDynamoDBでレコードを追加して動作確認を行います。

DynamoDBが何かわからない場合はHello Worldの文字を表示させましょう。

Lambda・IAMロール・DynamoDBの作成については以下の記事を参考にしてください。

API Gateway×LambdaでREST APIを構築する方法を解説!

設定手順

HTTP APIの設定

API GatewayでHTTP APIを作成していきます。

Lambda関数を実行できるようにLambda統合で作成している実行したいLambda関数を設定します。

API名はkamecloud-dynamo-http-testにします。

リソースパスを設定してエンドポイントを決定します。
メソッドはANYでもいいですが、PUTに変更しておきましょう。

ステージはそのままの設定でいいです。
意味合いとしては一つのステージのみしか運用しないってことで、変更したらAPIに即時反映されます。

CORS設定

最後にCORS設定をしていきましょう。

以下のように設定してください。

Access-Control-Allow-Origin:APIを実行させるホスト
Access-Control-Allow-Headers:content-type
Access-Control-Allow-Methods:OPTIONS, PUT[使用するメソッド]

動作確認

CORS設定が終わったらAPIの作成は完了です。

動作確認をしていきます。
実行環境はlocalhost等の準備をしてください。

localhostの実行環境の作り方がわからない方は以下の記事からdocker環境の作り方を参考にしてください。

const api_endpoint = "https://[APIのルートエンドポイント]/dynamo-insert";
window.addEventListener('load', async () => {
  try {
  const res = await fetch(api_endpoint, {
      method: 'PUT',
      headers: {
      'Content-Type': 'application/json'
      },
      body: JSON.stringify({})
  });
  const response_data = await res.json();
  document.getElementById('response_data').innerHTML = `
${JSON.stringify(response_data, null, 2)}
` } catch (error) { console.error(error); document.getElementById('response_data').innerHTML = `

${error.message}

`; } });

HTTP APIとREST APIの違い

HTTP API

HTTP APIは、AWS API Gatewayが提供する軽量かつ高速なAPIタイプです。

単純なRESTful APIや、WebSocketを必要としないシンプルなAPI構築に適しています。

低コストで高速なため、ちょっとしたデータの加工や受け渡しをやる場合に使用すると、コスト削減も行えます。

※WebSocketには直接的には非対応。

REST API

REST APIは、より多機能で柔軟性の高いAPIタイプです。

複雑な機能や設定が必要な場合や、WebSocket APIを利用する場合に適しています。

多機能で、リソースポリシー、APIキー、リクエストのキャッシュ等の高度な機能がサポートされています。

WebSocketにも対応しているが、HTTP APIに比べると高コストです。

HTTP APIとREST APIの使い分け

データのちょっとした加工や受け渡し・データベースへ保存する程度のものであれば、HTTP APIでいいです。

WebSocketを利用したリアルタイム通信が必要な場合・ユーザーごとに渡すデータが異なるような複雑な処理である場合等はREST APIの方がいいです。

勘違いをしてはいけないことが複雑な処理というのはLambdaのことではなく、REST API機能で行っている処理のことを指します。
そのため、Lambdaですべて処理を完結している場合はHTTP APIでも問題ありません。

まとめ

HTTP APIは、REST APIと比較してコストが低く、高速に動作するため、単純なAPI構築やデータの受け渡しに使用するとパフォーマンス・コストが最適化されます。

REST APIとHTTP APIを使い分けてよりコスト効率のいいシステムを構築しましょう!

この記事を書いた人

コツコツ亀

コツコツ亀

Webエンジニアとして活動中
AWSを使用してWebアプリケーションを作ったり、サーバーを構築したりしています。

関連記事

新着記事