Azure API 管理器上不同 API 密钥的不同调用限制
Different call limits for different API keys on Azure API Manager
我知道我们可以通过订阅密钥对 APIM 的通话限制如下
<rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
我有一个用例,我需要为不同的客户从现有的 API 中获利。根据他们选择的计划,他们将能够以不同的限制访问此 API。假设高级客户每分钟可以拨打我的 api 一次,而我的基本计划的客户可以每 10 分钟拨打一次 api。
我正在寻找一种方法来对不同的 API 密钥设置不同的速率限制。基本上是 API 键的映射和我需要配置的相应速率限制。因此,相同的 API 可以被不同的不同客户端访问,并且每个客户端都有自己的速率限制。
Azure APIM 中没有针对此问题的内置解决方案。
由于某些内部限制,调用将不支持表达式。
rate-limit-by-key calls
我已经设法通过对产品范围应用速率限制策略来解决它。通过使用
when
https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#choose
所以我的入境政策是这样的
<choose>
<when condition="@(context.Subscription.Name=="abcd")">
<rate-limit-by-key calls="1" renewal-period="15" counter-key="@(context.Subscription.Id)" />
</when>
<when condition="@(context.Subscription.Name=="efgh")">
<rate-limit-by-key calls="2" renewal-period="15" counter-key="@(context.Subscription.Id)" />
</when>
<otherwise />
</choose>
我知道我们可以通过订阅密钥对 APIM 的通话限制如下
<rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
我有一个用例,我需要为不同的客户从现有的 API 中获利。根据他们选择的计划,他们将能够以不同的限制访问此 API。假设高级客户每分钟可以拨打我的 api 一次,而我的基本计划的客户可以每 10 分钟拨打一次 api。
我正在寻找一种方法来对不同的 API 密钥设置不同的速率限制。基本上是 API 键的映射和我需要配置的相应速率限制。因此,相同的 API 可以被不同的不同客户端访问,并且每个客户端都有自己的速率限制。
Azure APIM 中没有针对此问题的内置解决方案。
由于某些内部限制,调用将不支持表达式。
rate-limit-by-key calls
我已经设法通过对产品范围应用速率限制策略来解决它。通过使用
when
https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#choose
所以我的入境政策是这样的
<choose>
<when condition="@(context.Subscription.Name=="abcd")">
<rate-limit-by-key calls="1" renewal-period="15" counter-key="@(context.Subscription.Id)" />
</when>
<when condition="@(context.Subscription.Name=="efgh")">
<rate-limit-by-key calls="2" renewal-period="15" counter-key="@(context.Subscription.Id)" />
</when>
<otherwise />
</choose>