【Azure API 管理】API Management 访问限制策略[quota-by-key] 中参数 [renewal-period] 的实验和理解

简介: 【Azure API 管理】API Management 访问限制策略[quota-by-key] 中参数 [renewal-period] 的实验和理解

quota-by-key 策略允许根据密钥强制实施可续订或有生存期的调用量和/或带宽配额。 密钥的值可以是任意字符串,通常使用策略表达式来提供密钥。 可以添加可选增量条件,指定应在配额范围内的请求。 如果多个策略增加相同的键值,则每个请求的键值仅增加一次。 超过调用速率时,调用方会收到 403 Forbidden 响应状态代码。

问题描述

API Management 访问限制策略:quota-by-key ,该策略有个属性renewal-period,它的单位为秒,在实验中多次设置此值,解析出来的结果都与设置的时间不匹配。

APIM 策略设置如下(如 renewal-period="3000"  设置为50分钟):

# policy 定义

<inbound>

   <base />

   <quota-by-key calls="1" renewal-period="3000" counter-key="@(context.Request.IpAddress)" />

</inbound>

设置完成后,马上在APIM中发送请求进行测试,测试时间Fri, 21 Jan 2022 02:53:16 GMT,但是结果显示 Quota will be replenished in 00:26:44。

 

理解误区为:

当设置策略的时候,间隔时间命名时50分钟,但为什么测试发现间隔时间不是40多分钟呢? 而是26分钟,所以这个renewal-period参数的规律到底如何来理解呢?

 

问题分析

在对 quota-by-key 的属性文档进行查找发现,renewal-period 表示在重置配额之前等待的时间长度,以秒为单位。所以 renewal-period 配置的是quota reset的间隔时间,而不是从当前时间(如策略修改的时间)开始递减的计时器。当设置为 0 时,时间段设置为无限。

举例如,假设当前时间为00:11:36,设置了renewal-period为10分钟(600),那么以00:00:00起始,各个10分钟的间隔(00:10, 00:20 ... 11:50, 12:00, 12:10 ...) 时, quota都会重置。

因此,00:41:36s时触发的Quota Exceed,返回的retry-after是8分钟24秒(504秒

HTTP/1.1 403 Quota Exceeded
content-length: 100
content-type: application/json
date: Thu, 20 Feb 2022 00:41:36 GMT
 
retry-after: 504
vary: Origin
    {
    "statusCode": 403,
    "message": "Out of call volume quota. Quota will be replenished in 00:08:24."
}

 

此外,如果对于周期非常长的renewal-period,还支持一种周期式的格式(P*Y*M*DT*H*M*S),如P0Y4M0DT0H0M0S:表示0年4个月0天,0小时0分0秒的时间段。

示例为:

<inbound>
        <base />
        <quota-by-key calls="1" renewal-period="P0Y4M0DT0H0M0S" counter-key="@(context.Request.IpAddress)" />
    </inbound>
####该策略以4个月间隔进行重置。计算间隔的起始日期是1月1日,因此会在每年的4月底,8月底,12月底进行重置。

 

参考资料

API 管理访问限制策略:https://docs.azure.cn/zh-cn/api-management/api-management-access-restriction-policies#LimitCallRateByKey

 

相关文章
|
5月前
|
API 网络安全 网络架构
【Azure APIM】解答REST API实现"禁用自签名证书的证书链验证"中的backends参数值从那里取值的问题?
本文介绍APIM服务调用后端API时因自签名证书导致500错误的解决方案。通过REST API禁用证书链验证,关键在于获取正确的backendId(即APIM中配置的Backend名称),并调用PATCH接口设置validateCertificateChain为false,从而解决SSL/TLS信任问题。
222 7
|
6月前
|
JSON 监控 API
京东商品数据获取新姿势:商品列表API参数全解析
京东商品列表API是京东开放平台的核心接口,支持开发者高效获取商品名称、价格、销量等信息,适用于电商分析、价格监控等场景。提供关键词搜索、分类筛选、价格区间、排序及分页功能,支持HTTPS请求,数据实时更新,单次可查询最多200个SKU,助力电商应用开发。
|
6月前
|
JSON 监控 供应链
京东商品详情API参数构造指南:必填参数与自定义字段配置
京东商品详情API由京东开放平台提供,支持获取商品基础信息、价格库存、SKU规格等120+字段,适用于价格监控、库存管理等场景。接口采用HTTPS协议、JSON格式,数据延迟≤30秒,支持高并发。提供Python请求示例,便于快速接入。
|
6月前
|
API 网络架构 容器
【Azure Container App】查看当前 Container App Environment 中的 CPU 使用情况的API
在扩展 Azure Container Apps 副本时,因 Container App Environment 的 CPU 核心数已达上限(500 cores),导致扩展失败。本文介绍如何使用 `az rest` 命令调用 Azure China Cloud 管理 API,查询当前环境的 CPU 使用情况,并提供具体操作步骤及示例。
229 17
|
6月前
|
存储 监控 前端开发
淘宝商品详情 API 实战:5 大策略提升店铺转化率(附签名优化代码 + 避坑指南)
本文深入解析淘宝商品详情API的核心字段与实战应用,分享如何通过动态定价、库存预警、差评控制等5大策略提升电商转化率。结合300+店铺实战经验,提供优化代码与避坑指南,助力开发者与运营者实现数据驱动的精细化运营。
|
6月前
|
数据采集 监控 API
亚马逊:对接竞品监控API实时跟踪价格变动,调整定价策略
在电商竞争中,亚马逊通过对接竞品监控API,实现价格实时采集与分析,动态调整定价策略。本文详解其技术实现、商业价值及挑战,展现数据驱动下的智能定价如何提升竞争力与利润。
660 0
|
6月前
|
人工智能 算法 搜索推荐
拼多多:通过用户分组API实施差异化营销策略,提高客单价
拼多多通过用户分组API实现差异化营销,精准提升客单价。基于用户行为数据自动分类,针对不同群体推送专属优惠,如高频用户推高端商品、新用户送礼包、低频用户唤醒激励。结合满减、捆绑销售等策略,有效提高单笔订单金额。该策略提升营销效率,增强用户粘性,助力平台实现数据驱动的可持续增长。
416 0
|
6月前
|
供应链 算法 API
网易严选 API 助力,品质电商商品选品策略升级
在电商竞争激烈背景下,网易严选通过开放商品数据API,提供动态选品解决方案,助力合作伙伴精准决策,实现效率与品质双提升,推动电商战略升级。
160 0
|
5月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
5月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南