azure-api-management - Azure API Manager 上不同 API 密钥的不同调用限制
问题描述
我了解我们可以通过订阅密钥对 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>
推荐阅读
- javascript - 在js中移动到同一页面中的新部分时制作动画
- php - 请求帮助我解决以下代码中的问题:
- autodesk-forge - 如何在 Autodesk Forge 中增加存储桶的大小?
- rest - 更正 HTTP 动词以用于 Web API 中的业务规则验证端点
- wordpress - Wordpress 联系表格 7 无法正常工作,为什么?
- selenium - 如何使用 Java 检查 Selenium Webdriver 中的另一个元素中是否存在一个元素?
- firebase - Firestore 是否会在离线超过 30 分钟时向我们收费?
- sqlite - SQlite:创建新列
- c++ - C++ OpenCV:屏蔽频域图像
- python-3.x - sklearn.impute.MissingIndicator ValueError:输入包含 NaN、无穷大或对于 dtype('float64')来说太大的值。: