gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:33:48 26 4
gpt4 key购买 nike

我正在尝试在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com