次の方法で共有


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 環境を維持できます。

次のステップ