🙆

【初心者向け】Amazon API Gateway 入門!完全ガイド

2023/01/11に公開

Amazon API Gateway

☘️ はじめに

本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS 公式ドキュメントをご参照ください。

👀 Contents

Amazon API Gateway とは

あらゆる規模の REST、HTTP、および WebSocket API を作成、公開、維持、モニタリング、およびセキュア化するための AWS のサービスです。
簡単にいうと、API の管理や実行を容易にしてくれる AWS のフルマネージドサービスです。

API のバージョン管理、レスポンスのモニタリング、認証などの機能が揃っているので、開発工数の大幅な削減が期待できます。

また、AWS Lambda と連携すれば、手軽にサーバーレスでの API が構築可能になります。

【AWS Black Belt Online Seminar】Amazon API Gateway(YouTube)(50:34)

apigw_blackbelt

Amazon API Gateway サービス概要

Amazon API Gateway ドキュメント

Amazon API Gateway よくある質問

Amazon API Gateway 料金

API Gateway の種類

  • REST API
    • RESTful API を使用したい場合
  • HTTP API
    • こちらも、RESTful API が構築できますが、REST API のほうが多くの機能をサポートしています。
    • HTTP API のほうは最小限の機能を低価格で利用することができます。
    • どちらを選択したらよいかは、ドキュメントのREST API と HTTP API 間で選択するを参照してください。
  • WebSocket API
    • クライアントとサーバー間でステートフルな全二重通信を行いたい場合

API Gateway の料金

Amazon API Gateway の料金

利用する API Gateway の種類で異なります。

HTTP API では API コール数、REST API では API コール数とキャッシュメモリサイズ、WebSocket API では メッセージ転送回数と接続時間で課金されます。

  • 無料枠
    • 12 か月間無料枠
    • REST API コール受信数 100 万件 | HTTP API コール受信数 100 万件 | メッセージ数 100 万件 | 接続時間 750,000 分/月

OpenAPI を使用した REST API の設定

OpenAPI v2.0 および OpenAPI v3.0 定義ファイルをサポートしており、インポートすることで既存の API 定義をそのまま移行したり、新しい API を構築することができます。

Swagger を利用して API の管理を行い、API Gateway にインポートすることもできます。

OpenAPI を使用した REST API の設定

Amazon API Gateway のクォータ

リクエストやレスポンスに影響する主なクォーターは次の通りです。

それ以外については、ドキュメントを参照してください。

Amazon API Gateway のクォータと重要な注意点

HTTP API

項目 Quota 引き上げ
最大統合タイムアウト 30 秒 いいえ
リクエスト行とヘッダー値の合計サイズ 10,240 バイト いいえ
ペイロードサイズ 10 MB いいえ

REST API

項目 Quota 引き上げ
統合のタイムアウト 50 ミリ秒〜29 秒 下限または上限には適用外
すべてのヘッダー値の合計サイズ 10,240 バイト いいえ
ペイロードサイズ 10 MB いいえ

WebSocket API

項目 Quota 引き上げ
WebSocket API の接続時間 2 時間 いいえ
アイドル接続のタイムアウト 10 分 いいえ
WebSocket のフレームサイズ 32 KB いいえ
メッセージのペイロードサイズ 128 KB いいえ

REST API のエンドポイントタイプ

REST API は、3 種類のエンドポイントタイプが選択できます。

apigw_endpoint

  • エッジ最適化
    • CloudFront のエッジローケーションを経由して、最適なリージョンにルーティングされます。エッジロケーションからリージョンまでは AWS 内のネットワークが利用されるので高速です。
    • エッジロケーションは AWS が管理します。
      apigw_endpoint-1
  • リージョン
    • 直接リージョンにルーティングされます。同一リージョンの場合、エッジロケーションを経由しない分、レイテンシを削減できます。
    • デフォルトのエンドポイントタイプです。
    • 自前の CloudFront と組み合わせることでエッジ最適化の構成にすることもできます。既に CloudFront を利用しているシステムの場合にこのような構成になります。
      apigw_endpoint-2
    • 自前の CloudFront を利用する場合は、API Gateway のエンドポイントを リージョン にしておきます。エッジ最適化 を選択していると、自前の CloudFront から、AWS が管理する CloudFront を経由して、API Gateway にアクセスすることになり、不要なレイテンシが発生したり、HTTP ヘッダーが予期しない値となったりするので注意が必要です。CloudFront を経由すると一部のヘッダーを書き換えます。自前の CloudFront はこれを回避することができますが、AWS が管理する CloudFront は設定を行うことが出来ません。
      apigw_endpoint-3
  • プライベート
    • VPC 内から AWS PrivateLink でのみアクセスできるエンドポイントです。
      apigw_endpoint-4

API Gateway のメトリクス

以下のメトリクスを監視することを検討してください。

  • バックエンドの応答性
    • IntegrationLatency
      • API Gateway がバックエンドにリクエストを中継してから、レスポンスを受け取るまでの時間
  • API コール全体の応答性
    • Latency
      • API Gateway がクライアントからリクエストを受け取ってから、クライアントにレスポンスを返すまでの時間で、API Gateway のオーバーヘッドと IntegrationLatency の合計です。
      • Latency = API Gateway のオーバーヘッド + IntegrationLatency
    • 監視の閾値は、たとえば、REST API の統合タイムアウトが 29 秒なので、これを事前に把握できるような余裕のある値にするというパターンもあります。
  • API キャッシュが有効になっている場合
    • CacheHitCount
    • CacheMissCount
  • エラーの把握
    • 4XXError
    • 5XXError
    • 上記メトリクスは、Average にすると、エラー率になります。つまり、期間内のエラー数を Count メトリクスで割ったものです。

その他、API Gateway の種類によって異なるメトリクスを取得できるので、必要に応じて監視を検討します。

REST API のメトリクス
HTTP API のメトリクス
WebSocket API のメトリクス

X-Ray でのトレース

X-Ray を使用した REST API へのユーザーリクエストのトレース

「X-Ray トレースの有効化」とするだけで簡単に各サービスへの流れをトレースして可視化することができます。

X-Ray のサービスマップの例

apigateway-xray-servicemap-2

X-Ray のトレースビューの例

apigateway-xray-traceview-1

📖 まとめ

apigateway

GitHubで編集を提案

Discussion