ITの教科書検索
入門読了 約10分

Amazon API Gatewayとは ― APIの受付窓口

API Gatewayは、認証と呼び出し回数の制限を手前で行い、許可したリクエストだけをLambdaなどに渡します。REST APIとHTTP APIの違い、料金の決まり方も説明します。

目次
  1. Amazon API Gatewayとは
  2. リクエストがLambdaに届くまで
  3. REST API・HTTP API・WebSocket APIの違い
  4. 認証で、呼んでよい相手を決める
  5. スロットリングで、呼び出しの数を抑える
  6. キャッシュで、同じ応答を速く返す
  7. 要件から種類と機能を選ぶ
  8. ステージとデプロイ
  9. 料金の決まり方
  10. 練習問題

Amazon API Gatewayとは、APIの入口を作り、リクエストをバックエンドに渡すサービス

Lambdaで作った処理をWebアプリやスマホアプリから呼ぶには、前にAmazon API Gatewayを置きます。認証や呼び出し回数の制限をバックエンドの手前で行い、許可したリクエストだけをLambda関数などに届けます。

多くのAPIを1か所にまとめる考え方は、Web APIの記事でAPIゲートウェイとして説明しています。API Gatewayは、これをAWSのサービスにしたものです。

AWSは、API Gatewayをアプリの「玄関口」と説明しています。その奥に置くバックエンドは、Lambda関数・EC2で動くアプリ・ほかのWebアプリなどです。Lambdaと組み合わせれば、サーバーレス構成で利用者からの要求を受ける部分になります。AWSのドキュメントも、API Gatewayをそう位置づけています。

リクエストがAPI Gatewayを通ってLambdaに届くまで

利用者のアプリは、API GatewayのURLにHTTPSでリクエストを送ります。API Gatewayは、設定に従って認証と回数の上限を確認します。許可されたリクエストだけがLambda関数に届き、それ以外はAPI Gatewayが拒否します。

利用者リクエストAPI Gateway・認証を確認する・回数の上限を確認する通ったら渡すLambda関数通ったときだけ動く止める認証が通らない401・403を返す止める上限を超えた429を返す利用者リクエストAPI Gateway・認証を確認する・回数の上限を確認する渡すLambda関数通ったときだけ動く止める認証が通らない401・403を返す止める上限を超えた429を返す
API Gatewayは、届いたリクエストの認証と回数の上限を確認し、許可したものだけをLambda関数に渡します。拒否したリクエストにはAPI Gatewayが401・403・429などを返すので、Lambda関数は動きません。Lambda関数の応答は、API Gatewayを通って利用者に返ります。

Lambda関数に接続するときは、プロキシ統合という方式をよく使います。この方式では、API Gatewayがリクエストのヘッダー・パス・本文を1つのイベントにまとめます。このイベントをLambda関数に渡します。

Lambda関数は、決められた形式で応答を返します。API Gatewayは、それを利用者へのHTTPの応答に変換します。

Lambda関数をHTTPで呼ぶ方法は、API Gatewayのほかに関数URLもあります。AWSのドキュメントは、試作や簡単なアプリには関数URLを勧めています。一方、API Gatewayが向くのは利用者の多い本番のAPIだと説明しています。認証・スロットリング・キャッシュを使いたい場合も同じです。

バックエンドの処理を待つ時間には、上限があります。REST APIでは、バックエンドの応答を待つ時間が既定で最大29秒です。リージョンのAPIなどでは、申請で延長できます。

REST API・HTTP API・WebSocket APIの違い

API Gatewayで作れるAPIは3種類です。REST APIとHTTP APIは、どちらもリクエストを受けて応答を返す形式のAPIです。REST APIは機能が多く、HTTP APIは機能を絞った分だけ安く使えます。

REST APIとHTTP APIの違い(AWS「Choose between REST APIs and HTTP APIs」、2026-10-30時点)
項目REST APIHTTP API
特徴機能が多い機能を絞り、料金が安い
Lambda関数との統合できるできる
認証の方法IAM・Cognito・Lambdaオーソライザー・リソースポリシーIAM・Lambdaオーソライザー・JWTオーソライザー
APIキーと利用者ごとの上限あるない
キャッシュあるない
AWS WAF付けられる付けられない
エンドポイントの種類エッジ最適化・リージョン・プライベートリージョンだけ
変更の反映手動でデプロイする手動か、自動のデプロイ

AWSのドキュメントは、次の機能が必要ならREST APIを選ぶよう勧めています。APIキー・利用者ごとの上限・リクエストの検証・AWS WAF・プライベートなエンドポイントです。これらが不要なら、HTTP APIで十分です。どちらも、Lambda関数やHTTPのエンドポイント、ほかのAWSのサービスに接続できます。

REST APIのエンドポイントには3つの種類があります。既定のエッジ最適化は、利用者に近いCloudFrontの拠点を通してリクエストを受けます。リージョンのエンドポイントは、同じリージョンからの利用に向きます。プライベートのエンドポイントは、VPCの中からだけ呼べます。

WebSocket APIは、接続を保ったまま双方向にやりとりする

WebSocket APIは、利用者のアプリとの接続を保ったまま、双方向にメッセージをやりとりします。REST APIと違い、バックエンドから、接続中の利用者へメッセージを送れます。チャットや、状態の変化をすぐ知らせる通知に向きます。

届いたメッセージは、内容に応じてルートに振り分けられます。接続を始めるときは$connect、切るときは$disconnectのルートが呼ばれます。どのルートにも当てはまらないメッセージは、$defaultのルートに届きます。

認証で、APIを呼んでよい相手を決める

API Gatewayは、Lambda関数を呼ぶ前に、リクエストの送信者を確認できます。選べる確認方法は、APIの種類によって違います。どの方法でも、許可されないリクエストはLambda関数に届きません。

  • IAM:IAMの記事で説明したポリシーで、APIを呼んでよいユーザーやロールを決めます。3種類のAPIで使えます
  • Amazon Cognitoのユーザープール:利用者はサインインしてトークンを受け取ります。このトークンをリクエストのAuthorizationヘッダーに付けて送ります。REST APIで使えます
  • Lambdaオーソライザー:API Gatewayが、自分で書いた確認用のLambda関数を呼びます。その関数が、許可するかどうかを返します。REST APIでは、IAMのポリシーの形式で返します
  • JWTオーソライザー:HTTP APIで、JWTという形式のトークンを検証します。Cognitoのトークンも、この方法で検証します

トークンを使って権限を渡す仕組みは、OAuthの記事で説明しています。Lambdaオーソライザーが拒否すると、API Gatewayは403などのステータスコードを返します。

APIキーは、認証の方法には含まれません。AWSのドキュメントは、APIへのアクセスを決める認証や認可にAPIキーを使わないよう求めています。APIキーは、次の節で説明する使用量プランで、呼び出し元を識別するために使います。

スロットリングで、呼び出しの数を抑える

API Gatewayは、1秒あたりのリクエスト数に上限を設けています。上限を超えた分を止めることを、スロットリングと呼びます。止められたリクエストには、429 Too Many Requestsが返ることがあります。

上限は、1秒あたりの数と、一時的に許容する量の2つで決まります。既定の上限は、1つのアカウントの1つのリージョンにあるAPI全体で数えます。1秒あたり10,000件で、一時的に許容する量は5,000件です。一部のリージョンでは、それぞれ2,500件と1,250件です。

1秒あたりの数は、申請で引き上げられます。一時的に許容する量はAWSが決め、アカウントの側では変更できません。上限で止められたアプリは、時間を置いてから再送します。

この上限の範囲内で、APIのステージやメソッドごとに、より低い上限を設定できます。REST APIでは、使用量プランを使うと、APIキーごとに頻度の上限と期間ごとの回数の上限を決められます。ただし、AWSのドキュメントは、費用の管理やアクセスの遮断の手段としてスロットリングに頼らないよう注意しています。攻撃のリクエストを止めるには、AWS WAFをREST APIに付けます。

キャッシュで、同じ応答を速く返す

REST APIでは、ステージごとにキャッシュを用意できます。キャッシュを有効にすると、API Gatewayはバックエンドの応答を設定した秒数の間だけ保存します。保存している間は、バックエンドを呼ばずに保存した応答を返します。呼び出しが減り、応答も速くなります。

保存する秒数は既定で300秒、最大で3,600秒です。既定でキャッシュの対象になるのは、GETのメソッドだけです。キャッシュの料金は、大きさに応じて1時間ごとにかかります。無料利用枠の対象にはなりません。

要件から、APIの種類と使う機能を選ぶ

ここまでの機能は、APIの種類によって使えるものが違います。次の図で作りたいAPIの要件を選ぶと、向くAPIの種類・使う機能・その理由が切り替わります。

作りたいAPIの要件を選ぶ
APIの種類
HTTP API
使う機能
Lambda関数との統合
理由
HTTP APIは、機能を絞った分だけREST APIより安く提供されています。REST APIにしかない機能が不要なら、HTTP APIを選びます。

REST APIにしかない機能が1つでも必要なら、REST APIを選びます。マイクロサービスで分けたサービスの前にAPI Gatewayを置く使い方は、マイクロサービスの記事で説明しています。

ステージとデプロイで、devとprodを分ける

API Gatewayでは、作ったAPIをデプロイしないと利用者から呼べません。デプロイは、ある時点のAPIの設定のスナップショットです。ステージは、そのデプロイにdevやprodのような名前を付けて、呼べる状態にしたものです。

ステージの名前は、APIのURLに入ります。既定のドメイン名のREST APIなら、URLは次の形です。

https://{APIのID}.execute-api.{リージョン}.amazonaws.com/{ステージ名}

たとえば、testのステージで動作を確認し、問題がなければprodのステージにデプロイします。REST APIは、メソッドや認証などを変更するたびに、ステージへデプロイし直します。HTTP APIでは、変更を自動でデプロイする設定も選べます。

キャッシュ・スロットリング・ログの設定は、ステージごとに決めます。ログと実行状況は、CloudWatchに送って確認できます。

料金は、呼び出しの数と転送したデータの量で決まる

API Gatewayには、最低料金や前払いがありません。REST APIとHTTP APIの料金は、受けたAPIの呼び出しの数と、外部へ転送したデータの量で決まります。呼び出しの単価は100万回あたりで決まり、月の呼び出しが多いほど段階的に下がります。

HTTP APIでは、1回のリクエストが512 KBを超えると、512 KBごとに1回の呼び出しとして数えます。WebSocket APIは、送受信したメッセージの数と、接続していた時間の合計で決まります。メッセージは32 KBごとに1件と数えます。REST APIのキャッシュを使うと、前の節で説明した1時間ごとの料金が加わります。

新しくAWSを使い始めた利用者には、無料利用枠があります。以上の仕組みは、2026年10月30日にAWSの料金ページで確認したものです。AWS全体の料金の考え方は料金の記事にまとめています。単価は、API Gatewayの料金ページで確認してください。

参考にした資料

練習問題(全5問)

Q1Amazon API Gatewayの説明として正しいものはどれ?
Q2APIキーごとに、呼び出しの頻度と回数の上限を決めたい。使うAPIの種類と機能の組み合わせはどれ?
Q3呼び出しが上限を超えたとき、API Gatewayが返すことがあるステータスコードはどれ?
Q4チャットのように、サーバの側から利用者へメッセージを送りたい。向くAPIの種類はどれ?
Q5REST APIのメソッドを変更したのに、利用者から呼ぶと以前のままだった。不足している作業はどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中7本目