はじめに
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を使い分けてよりコスト効率のいいシステムを構築しましょう!