クラウドネイティブ API Gateway では、API とオペレーションにポリシーを追加し、プラグインを設定することで、セキュリティ、パフォーマンス、保守性を向上できます。
ポリシーの変更は直ちに有効になります。 API を再公開する必要はありません。
デフォルトでは、ゲートウェイは API レベルのプラグイン設定をオペレーションレベルで適用します。
オペレーションレベルで API レベルのポリシーを削除することはできませんが、オペレーションレベルのポリシーは API レベルのポリシーをオーバーライドできます。
手順
API ポリシーは、インスタンス外から追加する方法と、インスタンス内から追加する方法の 2 通りがあります。
インスタンス外からの設定
Cloud-native API Gateway コンソールにログインします。ナビゲーションペインで [API] をクリックし、上部メニューからリージョンを選択します。
対象の API をクリックし、ドロップダウンリストから対象のインスタンスを選択します。
インスタンス内からの設定
Cloud-native API Gateway コンソールにログインします。ナビゲーションペインで [インスタンス] をクリックし、上部メニューからリージョンを選択します。
[インスタンス] ページで、対象のゲートウェイインスタンスの ID をクリックします。ナビゲーションペインで [API] をクリックし、対象の API をクリックします。
ポリシーとプラグインは、API レベルまたはオペレーションレベルで設定できます:
API レベル: API Policy Configuration タブをクリックして、API レベルですべての操作のポリシーとプラグインを設定します。 次に、Enable Policy/Plug-in をクリックします。
操作レベル: Operations タブで、対象の操作をクリックします。[ポリシー設定] タブをクリックし、次に Enable Policy/Plug-in をクリックします。
Enable Policy/Plug-in パネルで、設定するポリシーまたはプラグインを選択します。 詳細については、「ポリシー設定」および「プラグイン設定」をご参照ください。
ポリシー
スロットリングポリシー
クラウドネイティブ API Gateway は、API レベルとオペレーションレベルでスロットリングポリシーをサポートしています。これらのポリシーは、インバウンドリクエストがバックエンドサービスに過大な負荷をかけるのを防ぎ、カスケード障害の回避に役立ちます。高同時実行シナリオでは、スロットリングは一部のリクエストをブロックすることでバックエンドサービスの可用性を保護します。これにより、特定の期間内における各 API とオペレーションのリクエスト数を正確に制御し、その数が事前に設定されたしきい値を超えないようにします。
スロットリングポリシーには、同時実行制御、トラフィック制御、サーキットブレーカーが含まれます。
同時実行制御ポリシー:このポリシーは、同時リクエストの数を制限します。ゲートウェイで現在処理中のリクエストの総数をカウントすることで機能します。この数が設定されたしきい値に達すると、ゲートウェイは新しいトラフィックを直ちにブロックします。このしきい値を、バックエンドサービスが処理できる最大同時リクエスト数に合わせて設定すると、トラフィックスパイク時の可用性を保護できます。
トラフィック制御ポリシー:このポリシーは、1 秒あたりのクエリ数 (QPS) に基づいてリクエストレートを制限します。API またはオペレーションの QPS を監視することで機能します。QPS が設定されたしきい値に達すると、ゲートウェイは新しいトラフィックを直ちにブロックします。これにより、バックエンドサービスが突然のトラフィックスパイクによって過負荷になるのを防ぎ、高可用性を確保します。
サーキットブレーカーポリシー:このポリシーは、API やオペレーションの応答時間やエラー率を監視することで、バックエンドサービスを保護します。指定されたしきい値に達すると、ゲートウェイは回路を遮断し、不安定なサービスへのリクエストを直ちにフェイルファストさせることで、さらなる負荷を防ぎます。設定された期間が経過すると、ゲートウェイは「ハーフオープン」状態に入り、サービスが回復したかどうかを確認するために、限られた数のテストリクエストを許可します。サービスが安定していれば回路は閉じ、そうでなければ再び回路が遮断されます。
サーキットブレーキングの状態は各ゲートウェイノードで個別に維持されます。各ノードが独自にリクエストをカウントして低速呼び出し率または例外率を計算するため、サーキットブレーキングのしきい値は、クラスター全体で集計されるのではなく、ノードごとに適用されます。Minimum Number of Requests、Statistical Window Duration、およびサーキットブレーキング率のしきい値を設定する際は、これらの値がゲートウェイクラスター全体としてではなく、単一ノードのローカル統計に適用される点にご注意ください。
書き換えポリシー
書き換えポリシーを使用すると、リクエストをバックエンドサービスに転送する前に、リクエストパスとホスト名を変更できます。これにより、リクエストを正しいサービスまたはエンドポイントにルーティングし、特定のビジネス要件やアーキテクチャ要件を満たすことができます。
ヘッダー変更ポリシー
ヘッダー変更機能を使用すると、リクエストをバックエンドサービスに転送する前にリクエストヘッダーを変更したり、レスポンスをクライアントに返す前にレスポンスヘッダーを変更したりできます。
CORS ポリシー
オリジン間リソース共有 (CORS) は、Web アプリケーションサーバーがクロスオリジンアクセスを制御し、安全なデータ転送を可能にするセキュリティ機能です。クラウドネイティブ API Gateway は、API レベルとオペレーションレベルで CORS ポリシーをサポートしています。リソースにアクセスできるドメインとリクエストメソッドを指定できます。
CORS ポリシーはモックサービスでは有効になりません。テストするには、実際のバックエンドサービスを設定する必要があります。
トラフィックレプリケーションポリシー
トラフィックレプリケーションポリシーを使用すると、本番アプリケーションのトラフィックを指定されたサービスにコピーできます。この機能は、シミュレーションテストや問題の診断に役立ち、アプリケーションのパフォーマンス評価や障害のトラブルシューティングを行うことができます。
タイムアウトポリシー
クラウドネイティブ API Gateway は、API レベルおよびオペレーションレベルでタイムアウト設定を提供します。ゲートウェイがバックエンドサービスからの応答を待つ最大時間を設定できます。指定した時間内にゲートウェイが応答を受信しない場合、クライアントに HTTP 504 (Gateway Timeout) ステータスコードを返します。
リトライポリシー
Cloud-native API Gateway は、失敗したリクエストを自動的にリトライできるよう、API レベルおよびオペレーションレベルでリトライ設定を提供します。接続エラー、利用できないバックエンドサービス、または特定の HTTP ステータスコードでリトライをトリガーするなど、リトライ条件を設定できます。
プラグイン
Add Plug-in タブをクリックします。
Quick Navigation セクションで、プラグインタイプを選択するか、名前でプラグインを検索してから、プラグインカードをクリックします。
プラグインがインストールされていない場合は、ポップアップダイアログボックスで [インストールと設定] をクリックします。続いて表示されるダイアログボックスで、プラグインルールを設定して有効化します。
プラグインが既にインストールされている場合は、ポップアップダイアログボックスでプラグインルールを設定して有効化します。
[OK] をクリックして API のアタッチメントリストに戻ります。ここで、オペレーションに対するプラグインのアタッチ状況と有効化ステータスを確認できます。
アタッチメントリストはフローチャートです。フロントエンド API、インバウンド処理、バックエンドサービス、アウトバウンド処理 の 4 つのブロックで構成されます。ブロック間の矢印はリクエストフローを示します。各処理ブロックにはアタッチされたプラグインが一覧表示され、[ポリシー/プラグインの有効化] リンクをクリックして追加できます。