Azure API Managementでは、一定時間内に一定回数以上のアクセスが来たときにHTTP 429(Too Many Requests)を返却するような、流量制限を設定することができる。
今回は、Azure Portal上でをAzure API Managementの流量制限を設定してみたので、その手順を共有する。
前提条件
下記記事の実装が完了していること。
![](https://www.purin-it.com/wp-content/uploads/2021/01/nova-scotia-duck-tolling-retriever-5953883_640-320x180.jpg)
やってみたこと
流量制限の設定
流量制限の設定は、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例外をキャッチするメソッドがある場合は、実装方法が異なる。その内容については、以下の記事を参照のこと。
![](https://www.purin-it.com/wp-content/uploads/2021/06/adorable-1854119_640-320x180.jpg)
流量制限の削除
流量制限の削除も、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)を返却するような、流量制限を設定できる。