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 分あたり 1000 回の呼び出しを許可できます。
Azure API Management で API のレート制限を定義するには、 rate-limit
または rate-limit-by-key
ポリシーを使用します。 前者はすべてのユーザーに制限を設定し、後者では識別されたキー (サブスクリプションやユーザー 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 は、 retry-after
応答ヘッダーと、再試行できるタイミングを示すメッセージと共に、429 要求が多すぎます状態コードを送信します。
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 は応答ヘッダーのレート制限情報を公開しません。 レート制限を伝えないと、アプリが制限を超え、調整を回避することが困難になります。 レート制限情報を公開するには、remaining-calls-header-name
プロパティとtotal-calls-header-name
プロパティを使用してrate-limit
ポリシーを拡張します。
<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-remaining
ヘッダーと ratelimit-limit
ヘッダーが含まれます。これは、制限を超える前に API が処理できる呼び出しの数を伝えます。
まとめ
Azure API Management にレート制限を実装すると、堅牢でスケーラブルな API を作成できます。 レート制限を使用することで、API がユーザーに確実かつ効率的にサービスを提供できるようにします。 重要な点は、適切なバランスを見つけることです。厳密すぎると、使いやすさが妨げられる可能性があります。は、API の負荷が大きくなりすぎるため、API の負荷が大きすぎます。 慎重な計画と継続的な監視により、このバランスを実現し、正常な API 環境を維持できます。
次のステップ
Dev Proxy