Azure API Management でレート制限を実装する方法
レート制限を使用すると、特定の期間内にユーザーまたはサービスが実行できる API 呼び出しの数を制限できます。 レート制限は、公平な使用を保証し、単一のユーザーまたはサービスが API リソースを独占するのを防ぐのに役立ちます。 Azure API Management (APIM) には、API のレート制限を実装するための便利な方法が用意されています。
Azure API Managementの理由
Azure API Managementは、組織が外部、パートナー、および内部開発者に API を発行するのに役立つ、強力で汎用性の高いクラウド サービスです。 API 呼び出しをセキュリティで保護、管理、スケーリングするためのツールが用意されています。 その機能の 1 つは、API の正常性と信頼性を維持するために役立つレート制限を制御することです。
Azure API Management でレート制限を構成する
Azure API Managementでは、ポリシーを使用してレート制限を適用します。 これらのポリシーは、グローバル、製品、または API 固有のさまざまなスコープで定義できます。 この柔軟性により、API の要件と使用パターンに応じてレート制限を調整できます。
レート制限の実装を開始する前に、レート制限を決定します。 設定する制限は、API の容量と予想されるトラフィックによって異なります。 一般的な制限は、1 秒、分、または 1 時間あたりの呼び出し数として設定されます。 たとえば、ユーザーごとに 1 分あたり 1000 回の呼び出しを許可できます。
Azure API Management で API のレート制限を定義するには、 または rate-limit-by-key
ポリシーをrate-limit
使用します。 前者はすべてのユーザーに制限を設定しますが、後者では特定されたキー (サブスクリプションやユーザー ID など) ごとの制限が許可されます。
呼び出しを 1 分あたり 1000 に制限するポリシーの例を次に示します。
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
指定した呼び出し数を超えると、Azure API Managementは 429 要求数が多すぎる状態コードとretry-after
、応答ヘッダーと、再試行できるタイミングを示すメッセージを送信します。
HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
{
"statusCode": 429,
"message": "Rate limit is exceeded. Try again in 60 seconds."
}
応答ヘッダーのレート制限情報を公開する
既定では、Azure API Management では応答ヘッダーのレート制限情報は公開されません。 レート制限を通信しないと、アプリが制限を超え、調整されないようにするのが困難になります。 レート制限情報を公開するには、 プロパティと total-calls-header-name
プロパティを使用してrate-limit
ポリシーをremaining-calls-header-name
拡張します。
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
ここで API を呼び出すと、各応答に ヘッダーと ratelimit-limit
ヘッダーが含まれますratelimit-remaining
。これは、制限を超える前に API が処理できる呼び出しの数を伝えます。
まとめ
Azure API Managementでレート制限を実装すると、堅牢でスケーラブルな API を作成するのに役立ちます。 レート制限を使用することで、API がユーザーに確実かつ効率的にサービスを提供できるようにします。 重要なのは、適切なバランスを見つけることです。厳密すぎると、使いやすさが妨げられる可能性があります。が少なすぎるため、API を圧倒するリスクがあります。 慎重な計画と継続的な監視により、このバランスを取り、正常な API 環境を維持できます。
次の手順
Dev Proxy