Azure API Managementでは、一定時間内に一定回数以上のアクセスが来たときにHTTP 429(Too Many Requests)を返却するような、流量制限を設定することができる。
今回は、Azure Portal上でをAzure API Managementの流量制限を設定してみたので、その手順を共有する。
前提条件
下記記事の実装が完了していること。
やってみたこと
流量制限の設定
流量制限の設定は、Azure Portal上で実行できる。その手順は、以下の通り。
1) Azure Portalにログインし、作成済のAPI Managementを選択する。
2) 作成済のAzure API Managementの概要画面が表示されるため、「API」メニューを押下する。
3) 「All APIs」で「azureFuncDemoApp」を選択し、「Inbound processing」の「Add policy」ボタンを押下する。
4) 「Add inbound policy」メニューから「Limit call rate」を選択する。
5) 流量制限を設定するための、以下の画面が表示が表示される。
6) 以下のように、300秒(5分)以内に2回呼び出しまで許可する設定を追加し、「Save」ボタンを押下する。
なお、「Counter key」「Increment condition」は、それぞれ以下の項目を指定できる。
7) 設定の保存が完了すると、以下のように、右上に完了メッセージが表示されることが確認できる。ここで「rate-limit-by-key」を選択すると、設定内容を再確認できる。
8) 流量制限の設定内容は、以下のようにXML形式で設定されていることが確認できる。
なお、上記設定内容についての詳細は、以下のサイトを参照のこと。
https://docs.microsoft.com/ja-jp/azure/api-management/api-management-access-restriction-policies#LimitCallRateByKey
流量制限設定後の動作確認
流量制限設定後の動作確認結果は以下の通りで、流量制限の設定内容が反映されていることが確認できる。
1) Azure App ServiceのURL「https://azureappdemoservice.azurewebsites.net/」とアクセスすると以下の画面が表示されるため、「ファンクション呼び出し」ボタンを押下する。
なお、上記URLは、下記Azure App ServiceのURLから確認できる。
2) callFunctionApi関数が呼び出され、以下の画面に遷移する。その後「戻る」ボタンを押下する。
3) 以下のように、初期表示画面に戻ることが確認できる。ここで再度「ファンクション呼び出し」ボタンを押下する。
4) 遷移先画面に再度に遷移するので、「戻る」ボタンを押下する。
5) 初期表示画面に再度戻るので、「ファンクション呼び出し」ボタンを押下する。
6) 流量制限エラーとなり、以下のエラー画面に遷移することが確認できる。
なお、@ExceptionHandlerアノテーションでException例外をキャッチするメソッドがある場合は、実装方法が異なる。その内容については、以下の記事を参照のこと。
流量制限の削除
流量制限の削除も、Azure Portal上で実行できる。その手順は、以下の通り。
1) 作成済のAzure API ManagementのAPIを開き、「rate-limit-by-key」のメニューから「Delete」を選択する。
2) 画面下方に削除確認のボタンが表示されるため、「Save」ボタンを押下する。
3) 削除が完了すると、以下のように、右上に完了メッセージが表示されることが確認できる。
要点まとめ
- Azure API Managementでは、Azure Portal上で、一定時間内に一定回数以上のアクセスが来たときにHTTP 429(Too Many Requests)を返却するような、流量制限を設定できる。