azure - 尝试在Azure中的API管理上实现速率限制策略

标签 azure api rate apim limiting

我正在尝试在 Azure APIM 中设置一项策略,在其中我可以限制对 API 的调用,但也可以将一系列 IP 列入白名单,这样它们就不会被速率限制策略阻止。

理想情况下,我希望将每个 IP 的调用量限制在 60 秒内 60 次,除非它来自白名单 IP 地址(我们使用设定的范围将信息拉取到外部依赖项,这会超出速率,因此需要它们仍然这样做)

到目前为止,我已经尝试了以下操作(此处的 IP 和后端 ID 已更改:)):

    <set-backend-service id="apim-generated-policy" backend-id="name-of-my-function-app" />
    <rate-limit-by-key calls="60" renewal-period="60" counter-key="@(context.Request.IpAddress)" increment-condition="@(context.Response.StatusCode == 204 ^ context.Response.StatusCode == 404)" remaining-calls-variable-name="remainingCallsPerIP" />
    <ip-filter action="allow">
        <address-range from="10.0.0.0" to="10.0.0.254"/>
        <address-range from="10.1.0.0" to="10.1.0.254"/>
        <address-range from="10.2.0.0" to="10.2.0.254"/>
        <address>10.20.30.40</address>
    </ip-filter>

我在另一个项目中使用了“按键速率限制调用”部分 - 但问题是当我尝试将 IP 过滤器/白名单应用到其中时。

我发现,使用上述代码并未应用速率限制,但它应用了速率限制,但前提是您是该 IP 过滤器的一部分。

我认为我需要尝试以某种方式插入 IF 模块,这样如果您属于该 IP 范围,它就会忽略这些调用?这是制定政策的最佳方式,还是还有其他方式?

最佳答案

设法摆弄它,我已经回答了我自己的问题。

如果有人需要它,答案是:

<policies>
<inbound>
<base />
<set-backend-service id="apim-generated-policy" backend-id="name-of-my-function-app" />
<rate-limit-by-key calls="100" renewal-period="60" counter-key="@(context.Request.Ip)" >
<whitelist>
<add ip="10.0.0.0/24"/>
<add ip="10.1.0.0/24"/>
<add ip="10.2.0.0/24"/>
<add ip="20.77.50.57"/>
  </whitelist>
  <on-exceeded>
    <return-response>
      <set-status code="429" reason="Too Many Requests" />
    </return-response>
  </on-exceeded>
</rate-limit-by-key>
</inbound>
</policies>

关于azure - 尝试在Azure中的API管理上实现速率限制策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75085093/

相关文章:

powershell - 如何从 Get-AzureRmResourceGroup 标签检索键值对

azure - 如何在应用程序网关中将 https ://domainname. com 重定向到 https ://www. domainname.com

java - 使用 Spotify API - 如何在 Java 中跟踪多个重定向链接?

api - 在 magento 中使用 SOAP API 的 salesOrderInfo 获取简单的产品 sku 和 qty

sql - 联邦sql View azure

来自不同租户的 Azure AD 同意书

python - JSON解码错误 : Expecting value: line 1 column 1 (char 0) error

ios - 应用程序内链接来评价应用程序

android - 无法更改加速度计的速率

java - Java 中的传出请求速率限制,但具有动态速率