有没有办法通过 Azure API 管理中的订阅来改变速率限制的值

Posted

技术标签:

【中文标题】有没有办法通过 Azure API 管理中的订阅来改变速率限制的值【英文标题】:Is there a way of varying the value of the rate limit by subscription in Azure API Management 【发布时间】:2020-05-07 14:34:27 【问题描述】:

在 Azure API 管理中,可以通过订阅和密钥来限制调用率: https://docs.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies#LimitCallRateByKey

我的问题 - 有没有办法通过订阅来改变通话限制和续订期限?比如订阅 A 每分钟可以调用 100 次,而订阅 B 每 10 秒可以调用 500 次?

我认为订阅变量可以解决这个问题,但我认为这是不可能的。有没有其他办法?

谢谢, 克里斯。

【问题讨论】:

【参考方案1】:

如果我猜对了,这可能是一种解决方案:

<policies>
<inbound>
    <base />
    <choose>
        <when condition="@(context.Subscription.Id == "123")">
            <rate-limit-by-key calls="500" renewal-period="60" counter-key="@(context.Subscription.Id)" />
        </when>
        <when condition="@(context.Subscription.Name == "example-b")">
            <rate-limit-by-key calls="100" renewal-period="60" counter-key="@(context.Subscription.Id)" />
        </when>
        <otherwise>
            <rate-limit-by-key calls="10" renewal-period="60" counter-key="@(context.Subscription.Id)" />
        </otherwise>
    </choose>
</inbound>
<backend>
    <base />
</backend>...

这样,我认为您可以通过特定订阅 ID 或名称来改变速率限制。

【讨论】:

啊,是的!这可以很好地工作。谢谢你,我会试一试,然后回来。

以上是关于有没有办法通过 Azure API 管理中的订阅来改变速率限制的值的主要内容,如果未能解决你的问题,请参考以下文章

Azure 资源管理器 API 用户的订阅范围授权

在 Azure API 管理服务上将多个产品添加到订阅

Azure Resource Manager API用户的订阅范围授权

如何记录 Azure 服务总线访问?

为用户创建订阅的 Azure API 管理 REST 调用(缺失)

Azure Api 管理 ValidateJWT 与 Rs256 PrivateKey