【发布时间】:2021-05-20 09:18:56
【问题描述】:
我了解我们可以通过订阅密钥对 APIM 进行调用限制,如下所示
<rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
我有一个用例,我需要通过我现有的一个 API 为不同的客户获利。根据他们选择的计划,他们将能够以不同的限制访问此 API。假设高级客户每分钟可以调用一次我的 api,而我的基本计划的客户可以每 10 分钟调用一次 api。
我正在寻找一种方法来为不同的 API 密钥设置不同的速率限制。基本上是我需要配置的 API 密钥映射和相应的速率限制。因此,不同的不同客户端可以访问相同的 API,并且每个客户端都有自己的速率限制。
【问题讨论】:
-
应该有多个产品(代表不同的计划)?每个产品都有自己的
<rate-limit>(或<quota>)策略和相应的限制。然后,您授予客户访问这些 APIM 产品的权限。 -
另外,
rate-limit-by-key和quota-by-key都具有increment-condition属性。看来你可以做... increment-condition="@(context.Subscription.Id == "customer sub ID")"。哈克和未经测试! :) -
calls=中可能有一个错字(应该是一个数字),但是是的,这是我的想法。正如我提到的,我从未尝试过。让我们知道它是否有效:) -
除非您只有少数几个永远不会改变的订阅,否则我相信如果您围绕产品(API 访问层)组织速率限制会更容易扩展。通过这种方式,您可以在单个产品政策中定义限制,并将订阅与产品相关联。
-
嗨@JustinMathew 你解决了这个问题吗?如果问题解决了,请您在下面的区域发布答案。它可能会帮助其他社区。span>