AWS API Gateway
AWS API Gateway
目次

Amazon API Gateway徹底解説:Cloud Endpoints / API Gateway(GCP)・Azure API Managementとの比較で学ぶ“APIフロント設計”ガイド

はじめに(要点サマリー)

  • 本記事では Amazon API Gateway を主役に、GCP の Cloud Endpoints / API GatewayAzure API Management(APIM) と比較しながら、クラウド時代の APIフロント設計・セキュリティ・コスト最適化 をまとめて整理していきます。
  • Amazon API Gateway は、HTTP / REST / WebSocket API をフルマネージドで公開・保護・スケーリングするためのサービス で、Lambda や ECS / EKS、ALB、他 AWS サービスの“前段”として機能します。
  • GCP では Cloud Endpoints / API Gateway、Azure では Azure API Management が同じポジションを担い、どのクラウドでも「外部からの入口を一本化し、セキュアに制御する層」として設計されます。
  • 設計のポイントは、
    1. どんなクライアント(SPA / モバイル / サーバ間)が、どんな API をどう呼ぶか を最初に整理すること
    2. 認証・認可・レート制限・ログ を API フロント側でどこまで担うかを決めること
    3. バックエンド(Lambda / ECS / EKS / 他サービス)側には何を任せるか の分界を決めること
    4. REST API / HTTP API / WebSocket API のどれを使うか をシンプルに決めること
    5. GCP / Azure でも同じ設計思想を再現できる形で設計すること
  • 想定読者は、
    • Web / モバイルアプリの バックエンド開発者
    • マイクロサービス基盤や BFF(Backend for Frontend)を設計する テックリード・アーキテクト
    • API セキュリティ・ガバナンス・レート制限などに関心がある SRE / インフラ・セキュリティ担当 のみなさまです。
  • 読み終わるころには、「うちのサービスなら、API Gateway / Cloud Endpoints / APIM をこう使うのが現実的」 と自信を持って言える状態を目指しますね。

1. Amazon API Gatewayとは:クラウド時代の“玄関ドア”

1.1 役割のイメージ

Amazon API Gateway は、かんたんに言うと

「クライアント(ブラウザ・モバイル・他システム)からの HTTP / WebSocket リクエストを一手に受け止め、
認証・認可・レート制限・変換・ルーティングを行ってから、バックエンド(Lambda / ECS / EKS / 他サービス)に渡す“玄関ドア”」

です。

主な機能は:

  • API の公開(エンドポイント URL の提供、ステージ管理)
  • 認証・認可(IAM / Cognito / Lambda オーソライザー / API キー)
  • レート制限・スロットリング・クォータ
  • リクエスト / レスポンスの変換(マッピングテンプレート、ヘッダ操作など)
  • キャッシュ(REST API ステージキャッシュ)
  • ログ出力・メトリクス(CloudWatch 連携)
  • バックエンドへの統合(Lambda / HTTP / AWS サービス / VPC 内エンドポイント など)

GCP では Cloud Endpoints / API Gateway、Azure では Azure API Management が同じように “玄関ドア”として機能しますが、表現や UI は違っても 「入口でまとめて制御する」 という考え方は共通です。

1.2 どんなバックエンドと組み合わせるか

Amazon API Gateway の裏側に置ける代表的なバックエンドは:

  • AWS Lambda(完全サーバレスなバックエンド)
  • ECS / EKS 上のコンテナ(NLB / ALB 経由)
  • EC2 上のアプリケーションサーバー
  • 他の AWS サービス(Step Functions / SQS / Kinesis / DynamoDB など)
  • オンプレミスや他クラウド上の HTTP エンドポイント(VPC / VPN / Direct Connect 経由)

つまり、「HTTP / WebSocket で話せるものならだいたい何でも後ろに隠せる」 のが API Gateway の強みです。


2. GCP / Azure の同等サービスとざっくり比較

本題の前に、他クラウドの対応するサービスをざっくり押さえておきます。

2.1 GCP:Cloud Endpoints / API Gateway

  • Cloud Endpoints
    • OpenAPI / gRPC 仕様をベースに、API の公開・認証・ログ収集などを行うマネージド API 管理サービス。
    • 既存の GCE / GKE / Cloud Functions / Cloud Run などの前段に置いて使います。
  • GCP API Gateway
    • より新しめのサービスで、Cloud Functions / Cloud Run / GCE などの前に置く“実質的な API Gateway”。
    • IAM / API キー・JWT・Cloud Logging / Monitoring などと統合。

2.2 Azure:Azure API Management(APIM)

  • Azure API Management は、
    • API Gateway
    • 開発者ポータル
    • 分析・レポート
    • ポリシーベースの変換・セキュリティ
      をまとめて提供する “フル機能 API 管理プラットフォーム” です。
  • Azure Functions / App Service / AKS / VM などあらゆるバックエンドの前段として使え、企業向けのサブスクリプション管理・課金連携・外部公開 / 内部公開の切り分け まで幅広くカバーします。

Amazon API Gateway は、Azure APIM に比べると 「開発者視点での API フロント に特化した軽めのゲートウェイ」、Azure APIM は 「ガバナンス・開発者ポータル・契約管理まで含んだフル API プラットフォーム」 というイメージで捉えるとバランスが分かりやすいと思います。


3. Amazon API Gateway の構成要素

3.1 API・ステージ・リソース・メソッド

API Gateway の基本構成は次のようになっています。

  • API
    • 論理的な API 単位。
    • 例:「ユーザー API」「注文 API」「管理者 API」など。
  • ステージ(Stage)
    • 1つの API に対し、dev / stg / prod など複数ステージを作成可能。
    • ステージごとに URL やログ設定・キャッシュ・スロットリング値を変えられます。
  • リソース(Resource)
    • API パスの一部に対応する単位。
    • 例:/users, /users/{userId}, /orders, /orders/{orderId} など。
  • メソッド(Method)
    • 各リソースに対する HTTP メソッド(GET / POST / PUT / DELETE など)。
    • メソッドごとに、統合先・認証方法・マッピングなどを設定します。

GCP の Cloud Endpoints / API Gateway も、OpenAPI 仕様でパスとメソッドを定義し、それを元にゲートウェイが挙動を決める点は同じです。Azure APIM も「API → Operation(メソッド)」という構成で、かなり似た感覚で扱えます。

3.2 統合(Integration)の種類

メソッドの裏側にある「バックエンドとのつなぎ方」が “Integration” です。主な種類は:

  • Lambda 統合(Lambda Proxy / Non-Proxy)
  • HTTP 統合(外部 URL や ALB / NLB など)
  • AWS サービス統合(DynamoDB / SQS / Step Functions などへの直接呼び出し)
  • Mock 統合(バックエンドなしで固定レスポンスを返す)

特に Lambda Proxy 統合 はよく使われるパターンで、

  • リクエストをほぼそのまま Lambda 関数へ引き渡し、
  • Lambda 側で自由にレスポンスを構築して返す

という「シンプルに全部コードで制御する」スタイルです。


4. API の種類:REST API / HTTP API / WebSocket API

Amazon API Gateway には、大きく3種類の API があります。それぞれ性格が少し違うので、ここはしっかり押さえておきたいところです。

4.1 REST API

  • API Gateway の “古くからある” タイプ。
  • 非常に多機能で、
    • ステージキャッシュ
    • リソースポリシー
    • 利用プラン・API キー
    • マッピングテンプレート(Velocity Template Language)
      など細かく制御できます。
  • その反面、設定項目が多く、料金も HTTP API より高め です。
  • 既存の API Gateway 設計ガイドや書籍は REST API を前提にしていることも多いため、レガシー資産との整合も考慮する必要があります。

4.2 HTTP API

  • より新しいタイプで、シンプルかつ低コスト を目標に設計された API です。
  • 特徴:
    • 主に Lambda・HTTP バックエンドとの統合 にフォーカス
    • OpenID Connect / JWT 認証のサポート
    • REST API より少ない機能セットだが、その分、設定がシンプル
    • 料金が REST API より安く、レイテンシも若干有利なケースが多い
  • 逆に言うと、
    • ステージキャッシュ
    • 細かなマッピングテンプレート
      などが必要な場合は REST API が必要になることもあります。

新規で “普通の HTTP API” を作る場合、まず HTTP API を検討 → どうしても足りない機能があるときだけ REST API にする、という流れが今風です。

4.3 WebSocket API

  • チャット・オンラインゲーム・リアルタイム通知など、双方向通信が欲しいユースケース 向けの API タイプです。
  • クライアントと長時間接続を張り続け、イベント($connect / $disconnect / $default など)ごとに Lambda や HTTP バックエンドを呼び出します。
  • GCP / Azure では API Gateway / APIM 自体が WebSocket を直接扱うというより、ロードバランサや App Service / Cloud Run 側で WebSocket を処理する構成が多く、“API Gateway 本体が WebSocket を持つ”のは AWS の特徴のひとつです。

5. 認証・認可・セキュリティ設計

5.1 API Gateway 側でできること

Amazon API Gateway では、API ごと・メソッドごとに次のような認証・認可を設定できます。

  • IAM 認可
    • クライアント(IAM ユーザー / ロール / Cognito 認証ユーザーなど)の IAM ポリシーで、API への呼び出し可否を制御。
    • サーバ間(バックエンド同士)の保護に向きます。
  • Cognito オーソライザー(JWT)
    • Cognito User Pool で発行した ID トークン / アクセストークンを、API Gateway が検証。
    • SPA / モバイルアプリなどの “ユーザー認証済みクライアント” に向きます。
  • Lambda オーソライザー(カスタム)
    • 任意の Lambda 関数でトークン検証・権限判定を行い、IAM ポリシードキュメントを返す方式。
    • 独自の JWT / API キー / IP など複雑なロジックで認可したいときに便利です。
  • API キー+利用プラン
    • 発行した API キーごとにクォータやレート制限を設定し、課金・外部パートナー向け API などに活用できます。

これらに加えて、WAF(Web Application Firewall)や Shield(DDoS 対策)を CloudFront や ALB 経由で組み合わせることで、多層防御を構成できます。

5.2 リソースポリシーとプライベート API

  • REST API では リソースポリシー を設定でき、
    • 特定 VPC エンドポイントからのみ許可
    • 特定 IP / CIDR からのみ許可
    • 特定アカウントからのみ許可
      といった細かい制御が可能です。
  • プライベート API を使うと、インターネットからはアクセスできず、VPC 内(または VPC 接続)からのみ呼び出せる“内部 API”を作れます。
  • GCP でも Private Service Connect、Azure でも VNet 統合+プライベートエンドポイントを使い、「社外には出したくない API」 を似たような構成で作れます。

6. パフォーマンス・スロットリング・キャッシュ

6.1 レート制限とスロットリング

API Gateway は、

  • アカウント / リージョン単位
  • ステージ単位
  • 使用プラン(API キー)単位

でレート制限(1秒あたりのリクエスト数、バースト数)を設定できます。

これにより:

  • 想定外のトラフィックからバックエンドを守る
  • 外部パートナーごとに利用上限を設ける
  • フリー枠 / 有料枠などプラン分けを行う

といった 「入り口での交通整理」 がしやすくなります。
GCP / Azure でも、API Gateway / APIM において同様のレート制限・クォータ機能が提供されており、設計思想はかなり似ています。

6.2 キャッシュ(REST API)

REST API では、ステージごとにキャッシュを有効化することができます。

  • キャッシュキー:
    • パス・クエリパラメータ・ヘッダなどを組み合わせて定義。
  • キャッシュの効果:
    • バックエンド(Lambda / ECS / DB など)への負荷を減らし、レスポンス時間を短縮。
    • 特に「参照が多く更新頻度が低い API」に有効です。

ただし、キャッシュは容量に応じて料金が発生するため、CloudFront やアプリ側のキャッシュとの役割分担 を考慮する必要があります。
HTTP API ではステージキャッシュがない代わりに、CloudFront のキャッシュや、クライアント側キャッシュを積極的に活用する構成がよく使われています。


7. ログ・監視・トレーシング

7.1 CloudWatch Logs / Metrics

API Gateway は、次のような情報を CloudWatch に送信できます。

  • アクセスログ
    • リクエストパス・クエリ・ヘッダ・レスポンスコード・レイテンシなど。
    • JSON 形式で出力すれば後続処理で扱いやすくなります。
  • 実行ログ
    • マッピングテンプレートのエラー・統合エラーなど、API Gateway 内部の詳細ログ。
  • メトリクス
    • リクエスト数
    • 4xx / 5xx のエラー数・割合
    • レイテンシ(平均 / p99 など)
    • キャッシュヒット率(REST API)

これらを CloudWatch ダッシュボードやアラームに組み込み、「API の健康状態」を常に可視化しておくことが重要です。
GCP では Cloud Logging / Monitoring、Azure では Log Analytics / Azure Monitor / Application Insights が同様の役割を担います。

7.2 X-Ray などによるトレーシング

  • Lambda / ECS / EKS などバックエンド側と組み合わせて、X-Ray などの分散トレーシングツール を使うと、
    • どの API が遅いか
    • どのバックエンドで時間がかかっているか
      を可視化できます。
  • GCP では Cloud Trace、Azure では Application Insights / OpenTelemetry ベースのトレーシングがあり、同じように API 〜バックエンドをまたいだ可観測性を実現できます。

8. 料金モデルとコスト最適化のポイント

8.1 課金のざっくりイメージ

細かい単価は公式料金ページを必ずご確認いただきたいのですが、ざっくりとしたイメージは:

  • API 呼び出し回数(REST / HTTP / WebSocket の種類によって単価が異なる)
  • 転送データ量(リージョン間・インターネット向け)
  • キャッシュ容量(REST API)
  • カスタムドメイン・WAF などの周辺サービス

といった要素で決まります。
HTTP API は REST API より単価が安めに設定されており、「シンプルな HTTP API」用途ではかなり有利です。

8.2 コストを抑えるための設計

  • HTTP API を優先的に検討する
    • 必要な認証・ログ・ルーティング機能が HTTP API に収まるなら、HTTP API を選ぶだけでコストを下げやすくなります。
  • CloudFront やクライアント側キャッシュを活用する
    • 同じレスポンスを何度も返す API は、API Gateway の手前でキャッシュしてしまう方が効率的な場合も。
  • payload を無駄に大きくしない
    • 画像・大きな JSON をそのまま返すと転送料が嵩みます。S3 へのリダイレクトや部分取得などを検討しても良いでしょう。
  • API の粒度を適切にする
    • 1画面に必要な情報を 10 回に分けて API 呼び出しするより、1〜2回でまとめた方がコスト的にもレイテンシ的にも有利なことが多いです(BFF パターン)。

GCP / Azure でも、呼び出し回数・転送量・追加機能(開発者ポータル・ポリシーなど) に対して課金される構造は似ているので、同じ観点で最適化できます。


9. サンプル構成と設計パターン

ここからは、代表的な構成パターンをいくつかイメージしてみましょう。

9.1 パターン1:SPA + Lambda の完全サーバレス構成

  • フロントエンド:
    • S3 + CloudFront で SPA(React / Vue など)を配信。
  • API:
    • Amazon API Gateway(HTTP API)
    • バックエンド:AWS Lambda(Node.js / Python など)
    • データストア:DynamoDB / RDS など

特徴:

  • インフラ運用ほぼゼロ(サーバレス)
  • スケーリングも自動。小規模〜中規模サービスや PoC・新規プロダクトにとても向いています。
  • GCP なら Cloud Run / Cloud Functions + API Gateway / Cloud Endpoints、Azure なら Functions + APIM という構成が近いです。

9.2 パターン2:ECS / EKS + API Gateway のコンテナ構成

  • バックエンドは ECS / EKS 上のコンテナで運用(状態管理は RDS / DynamoDB など)。
  • API Gateway → VPC リンク → NLB / ALB → ECS / EKS という流れで HTTP 統合。

特徴:

  • 既にコンテナ基盤を持っている組織が、外部公開 API のみを API Gateway でまとめて保護したいケースに向きます。
  • IP 制限・WAF・認証などを API Gateway で一元的に制御でき、バックエンドはビジネスロジックに集中できます。
  • GCP だと GKE + Cloud Endpoints / API Gateway、Azure だと AKS + APIM / Application Gateway が近しい構成です。

9.3 パターン3:BFF(Backend for Frontend)としての API Gateway

  • モバイルアプリ / 複数の SPA / 外部パートナーなど、それぞれに最適化した API を用意したい場合、
    • mobile-api.example.com
    • web-api.example.com
    • partner-api.example.com
      といった API を API Gateway 上で分け、
    • 内部では同じバックエンドマイクロサービス群にルーティングする構成が考えられます。

特徴:

  • 各クライアント向けに
    • レスポンス形式
    • 認証パターン
    • レート制限
      を変えやすく、柔軟なフロント層を作れます。
  • Azure APIM の “Products / APIs / Policies” のような概念で、同じことを実現できますし、GCP でも複数ゲートウェイ定義と IAM / API キーで同様のパターンが組めます。

10. 他クラウドとの比較ポイントまとめ

ここまでの内容を踏まえて、Amazon API Gateway と GCP / Azure の同等サービスの違いをざっくり整理してみます。

10.1 機能レベルの比較

  • Amazon API Gateway
    • REST / HTTP / WebSocket API
    • Lambda / AWS サービス連携が非常に強力
    • CloudFront / WAF / Cognito / IAM との統合がスムーズ
    • 開発者ポータルや課金連携は別サービスで補うイメージ
  • GCP Cloud Endpoints / API Gateway
    • OpenAPI / gRPC ベースの API 管理
    • Cloud Run / Functions / GKE との連携に優れる
    • Cloud Logging / Monitoring / IAM との統合が自然
  • Azure API Management
    • API Gateway + 開発者ポータル + 分析 + サブスクリプション管理など“全部入り”
    • ポリシーによる細かな制御(変換・認証連携・キャッシュ)が強力
    • Entra ID(旧 Azure AD)連携が前提になっていることが多く、企業 IT との一体運用に向く

10.2 どれを選ぶべきかのざっくり軸

  • AWS 中心で、Lambda / ECS / EKS ベースのバックエンドを作る
    → Amazon API Gateway(HTTP API を基本に)
  • GCP 中心で Cloud Run / Functions / GKE を使う
    → Cloud Endpoints / API Gateway
  • Azure 中心で、AD / API 管理 / 社外公開 API のガバナンスまでまとめて考えたい
    → Azure API Management

マルチクラウドの場合は、各クラウドの API Gateway をそのクラウドのワークロードの前段に置き、DNS / ルーティング層で入り口をデザインする 形が現実的です。


11. よくある落とし穴と回避策

11.1 Lambda + API Gateway でのタイムアウト・コールドスタート

  • API Gateway のタイムアウト(REST / HTTP API の最大タイムアウト)を超える処理を Lambda で行おうとして、しれっとタイムアウト してしまうケースはよくあります。
  • 対策:
    • 時間のかかる処理は Step Functions / キュー(SQS)+バッチに逃がす。
    • Lambda は「速く終わるフロントロジック/オーケストレーション」に絞る。
    • コールドスタートを気にするなら、コンテナ(ECS / EKS)側に寄せる選択も検討。

11.2 設定が複雑になりすぎて誰も触れない API

  • REST API + マッピングテンプレート + 複数ステージ + キャッシュ + カスタムオーソライザー…
    と積み重ねていくと、「どこで何をしているのか分からない API Gateway」 が生まれてしまうことがあります。
  • 対策:
    • 新規はなるべく HTTP API でシンプルに。
    • 変換ロジックを詰め込みすぎず、コード側(Lambda / バックエンド)に寄せる。
    • どのレイヤーで何をするか(認証・変換・ロギング)をチーム内で決めてドキュメント化しておく。

11.3 ログが出ているのに誰も見ていない

  • アクセスログを細かく出しているのに、誰も CloudWatch Logs やメトリクスを見ていない という状態もありがちです。
  • 対策:
    • 「p95 レイテンシ」「5xx 率」「特定 API のエラー数」など、SLO に紐づく指標を CloudWatch ダッシュボードにまとめる
    • しきい値を決めてアラームを設定し、Slack / メールなどに通知。
    • GCP / Azure でも同様に、Monitoring / Azure Monitor にメトリクスを集約しておきましょう。

12. 誰がどう得をする?(読者別の具体的なうれしさ)

12.1 バックエンド / フロントエンド開発者の方

  • API Gateway でどこまでやるべきで、どこから先をバックエンドでやるべきか」という境界が、かなりクリアになると思います。
  • SPA / モバイルアプリ側から見ても、
    • どのエンドポイントで何のトークンを投げるか
    • レート制限やエラーの扱い
      を開発チーム間で共有しやすくなります。

12.2 SRE / プラットフォームエンジニアの方

  • Amazon API Gateway / GCP API Gateway / Azure APIM を横並びで理解することで、
    • 「全社共通の API フロント基盤」を設計する際に、クラウドごとの違いを説明しながら最適な組み合わせを提案しやすくなります。
  • レート制限・WAF・ログ・メトリクス・トレーシングを 標準テンプレート化 しておけば、新しいチームやプロダクトが増えても運用コストを抑えられます。

12.3 セキュリティ・ガバナンス担当の方

  • 認証・認可・IP 制限・プライベート API・WAF など、API のセキュリティをどのレイヤーで担保するかを俯瞰して考えられるようになります。
  • 「この会社として、外部公開 API は最低限ここまでやる」という ポリシーとチェックリスト を作るうえで、API Gateway / Endpoints / APIM の理解は強い武器になります。

12.4 スタートアップ CTO / 技術リーダーの方

  • 少人数で API をたくさん作らなければならない状況で、
    • どこまでを統合して API Gateway に任せるか
    • どこから先を各プロダクトごとの責任にするか
      の線引きは非常に重要です。
  • 本記事の内容を前提に、「うちの標準 API ガイドライン」 を作ってしまえば、メンバーが増えても API の設計品質を一定以上に保ちやすくなります。

13. 今日からできる3ステップ

  1. いま運用中の API を 3 本だけピックアップして、入口を図に描く
    • クライアント → DNS / CloudFront → API Gateway(あるいは別の入口)→ バックエンド → DB / 他サービス
      を紙やホワイトボードに書き出してみてください。
  2. それぞれの API について、「認証方式」「レート制限」「ログ」「監視」を一覧にする
    • 既にバラバラなら、「API Gateway などの共通フロントで揃えられないか?」を考えてみましょう。
  3. 新規 API は HTTP API + Lambda(または既存バックエンド)で 1 本試してみる
    • 小さな API を 1 本、HTTP API で立ててみるだけでも、操作感やログの見え方が掴めます。
    • GCP / Azure でも、同様に API Gateway / APIM で小さな PoC を作ってみると比較しやすくなります。

14. まとめ:API フロントは「入口での共通ルール」を作る場所

Amazon API Gateway は、

  • クライアントからのリクエストを一手に受け止め、
  • 認証・認可・レート制限・ログ・ルーティングを統合的に扱える、
    API の“玄関ドア” です。

GCP や Azure でも同様のサービスがあり、クラウドが変わっても

  • 「入口で共通ルールを決める」
  • 「バックエンドはビジネスロジックに集中させる」
  • 「ログとメトリクスで API の健康状態を常に見える化する」

という基本思想は変わりません。

少しずつで構いませんので、

  • 既存 API の前に API Gateway / Endpoints / APIM を一枚挟んでみる
  • 新規 API は HTTP API や Cloud Run / APIM など “ゲートウェイ前提” で設計してみる

といった小さな一歩から始めてみてください。
その積み重ねが、スケールしても守りやすく、観測しやすい API 基盤 につながっていきます。


参考リンク(公式ドキュメント・製品ページ)

投稿者 greeden

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)