API Gatewayの高度な機能
API Gatewayの高度な機能
APIのキャッシュ
API Gatewayには、APIへのレスポンスを一時的に保存しておく「キャッシュ」機能があります。これにより、毎回バックエンドのサービス(例: LambdaやEC2)にリクエストを送る必要がなくなり、応答を速くしたり、バックエンドの負荷を減らしたりすることができます。
キャッシュの設定
- ステージごと: キャッシュは開発、テスト、本番といった「ステージ」ごとに設定できます。
- 容量: キャッシュとして保存するデータの量を設定できます。
- TTL (Time To Live): キャッシュが有効な時間(秒単位)を設定します。この時間が過ぎるとキャッシュは古くなったとみなされ、次のリクエストでバックエンドから最新のデータが取得されます。
キャッシュの更新
アプリケーションの新しいバージョンをリリースしたときなど、キャッシュされている古いデータを新しいものに更新したい場合があります。その場合は、以下の方法でキャッシュをクリア(フラッシュ)できます。
- キャッシュの無効化: ステージの設定画面からキャッシュを一時的に無効にして、再度有効にすることで、キャッシュ全体をクリアできます。
- TTLを0に設定: TTLを一時的に0に設定することでも、キャッシュを強制的に無効化できます。
また、特定のリクエストだけキャッシュを使わずに最新の情報を取得したい場合は、リクエストのHTTPヘッダーにCache-Control: max-age=0
を含めることで対応できます。
カナリアリリース
カナリアリリース(Canary Release)は、新しいバージョンのAPIを本番環境に少しずつ導入していくための手法です。これにより、もし新しいバージョンに問題があっても、影響を受けるユーザーを最小限に抑えることができます。
API Gatewayでは、このカナリアリリースを簡単に行うための「Canary」という機能があります。
仕組み
- 既存のステージ(例: 本番ステージ)に対して「Canaryステージ」を作成します。
- 新しいバージョンのAPIをCanaryステージにデプロイします。
- 本番ステージへのリクエストのうち、何パーセントをCanaryステージに流すかを設定します。(例: 10%)
- これにより、一部のユーザーだけが新しいAPIを利用することになり、その動作をテストできます。
- テストが完了し、新しいAPIに問題がないことが確認できたら、Canaryを「昇格」させます。これにより、全てのリクエストが新しいAPIに向けられるようになり、完全に新しいバージョンに切り替わります。
WAF連携
API Gatewayは、AWS WAF (Web Application Firewall) と連携することで、APIのセキュリティを強化できます。
AWS WAFは、一般的なウェブ攻撃からアプリケーションを保護するためのファイアウォールサービスです。例えば、以下のような攻撃を防ぐことができます。
- SQLインジェクション: データベースを不正に操作する攻撃
- クロスサイトスクリプティング (XSS): ユーザーのブラウザで不正なスクリプトを実行させる攻撃
API GatewayにWAFのウェブACL(アクセスコントロールリスト)を関連付けるだけで、これらの攻撃からAPIを保護できます。AWSが提供するマネージドルール(専門家が作成・管理するルールセット)を利用すれば、簡単にセキュリティ対策を始めることができます。
監視連携
APIの運用状況を把握し、問題が発生したときに迅速に対応するためには、監視が不可欠です。API Gatewayは、AWSの監視サービスと簡単に連携できます。
-
Amazon CloudWatch: API Gatewayは、自動的に多くのメトリクスをCloudWatchに送信します。これにより、以下のような情報をダッシュボードで可視化したり、アラームを設定したりできます。
Count
: APIの呼び出し回数Latency
: リクエストの処理にかかった時間(レイテンシ)4xxError
: クライアント側のエラー数 (例: 404 Not Found)5xxError
: サーバー側のエラー数 (例: 500 Internal Server Error)
-
AWS X-Ray: X-Rayを有効にすると、リクエストがAPI Gatewayからバックエンドのサービス(Lambdaなど)へと流れていく処理の全体像を可視化できます。これにより、パフォーマンスのボトルネックとなっている箇所や、エラーが発生している箇所を特定するのが容易になり、デバッグに役立ちます。
【HTTP APIとREST APIの提供機能の違い】
API Gatewayには、「HTTP API」と「REST API」という2種類のAPIを作成する方法があります。どちらもRESTfulなAPIを構築するためのものですが、機能や料金、パフォーマンスに違いがあります。
-
HTTP API:
- シンプルなAPIタイプです。
- REST APIよりも低コストで、低レイテンシ(高速)になるように設計されています。
- 基本的な機能に絞られており、JWTオーソライザーなどの最新の認証方式をサポートしています。
- ほとんどの一般的なユースケースに適しています。
-
REST API:
- 多機能な従来のAPIタイプです。
- APIキー、リクエスト検証、キャッシュ、WAF連携など、高度な機能が必要な場合に使用します。
REST API は HTTP API よりも多くの機能をサポートしていますが、HTTP API は低価格で提供できるように最小限の機能で設計されています。どちらを選ぶべきか迷った場合は、まずHTTP APIで要件を満たせるか検討し、HTTP APIにない機能が必要な場合にREST APIを選択するのが良いアプローチです。