3.9 插件管理
3.9.4 流量控制插件
}
3.9.4 流量控制插件
流量控制插件可以限制单位时间内API的被调用次数,支持参数流控、基础流控和基于 基础流控的特殊流控。
说明
2021年12月4日后创建的专享版实例支持流量控制插件,在这之前创建的专享版实例不支持流量 控制插件,如需使用流量控制插件,请联系客服。
● 基础流控
可以对API、用户、应用、源IP进行多维度流控,与已有的流量控制功能一致但不 兼容。
● 参数流控
支持根据Header、Path、Method、Query以及系统变量中的参数值进行自定义流 控。
对单个API进行流量统计和控制。
● API共享生效
对绑定了该插件的所有API进行总流量统计和控制。
时长 流量限制的时长。
● 与“API流量限制”配合使用,表示单位时间内的单个 API请求次数上限。
● 与“用户流量限制”配合使用,表示单位时间内的单个 用户请求次数上限。
● 与“应用流量限制”配合使用,表示单位时间内的单个 APP请求次数上限。
● 与“源IP流量限制”配合使用,表示单位时间内的单个 IP地址请求次数上限。
参数 配置说明
API流量限制 单个API被调用次数上限。
与“时长”配合使用,表示单位时间内的单个API请求次 数上限。
用户流量限制 单个用户调用API次数上限,如果API认证方式为IAM认 证,用户流量根据项目ID来限制;如果API认证方式为APP 认证,用户流量根据帐号ID来限制。帐号ID和项目ID请参 考下文“特殊租户”配置说明。
● 不超过“API流量限制”。
● 与“时长”配合使用,表示单位时间内的单个用户请求 次数上限。
● 如果主帐号下有多个子用户访问API,按主帐号累计的 调用次数进行限制。
应用流量限制 单个应用调用API次数上限,仅适用于API的安全认证方式 为APP认证时。
● 不超过“用户流量限制”。
● 与“时长”配合使用,表示单位时间内的单个应用请求 次数上限。
源IP流量限制 单个IP地址调用API次数上限。
● 不超过“API流量限制”。
● 与“时长”配合使用,表示单位时间内的单个IP地址请 求次数上限。
参数流控配置 参数流控配置开关。开启后,以参数维度进行流控限制。
定义参数 定义用于规则匹配的参数。
● 参数位置:用于规则匹配的参数位置。
– path:API请求的URI,系统默认配置。
– method:API请求方法,系统默认配置。
– Header:HTTP头域的第一个值。
– Query:QueryString的第一个值。
– System:系统参数。
● 参数:用于判断与规则匹配中的参数值是否匹配。
参数 配置说明
– pattern为正则表达式
– enum为枚举值,多个参数值之间用英文逗号分隔
● API流量限制
API调用次数的最大值。
● 时长
定义规则的流量控制时长,若此处不配置时长,规则的 流量控制时长以“策略基本信息”的时长为准。
例如,在“定义参数”中添加参数“Host”,参数位置选 择“Header”;在“定义规则”中添加一条规则,匹配条 件设置成“Host = www.abc.com”,API流量限制为10,
时长为60s。表示在60s内,对于请求头域中host参数等于
“www.abc.com”的API,且API调用次数达到10,参数流 控生效。
特殊流控配置 特殊流控配置开关。开启后,“基础流控”的用户流量限 制/应用流量限制与“特殊流控”的特殊租户/特殊应用共 同作用时,以特殊流控值为准。
特殊租户 租户ID为帐号ID或项目ID。
● 绑定APP认证的API时,租户ID为项目ID,获取项目 ID。
● 绑定华为IAM认证的API时,租户ID为帐号ID,不支持 细分到IAM用户维度,获取帐号名和帐号ID。
阈值为单位时间内,此租户访问API的最大值,不超过
“基础流控”的API流量限制值。
特殊应用 选择已有应用,阈值为单位时间内,此应用访问API的最 大值,不超过“基础流控”的API流量限制值。
脚本配置示例
{ "scope": "basic", "default_interval": 60, "default_time_unit": "second", "api_limit": 100,
"app_limit": 50, "user_limit": 50, "ip_limit": 20, "specials": [ {
"type": "app", "policies": [ {
"key": "2e421d76dc6c4c75941511ccf654e368", "limit": 10
"key": "878f1b87f71c40a7a15db0998f358bb9", "limit": 10
"match_regex": "[\"Host\",\"==\",\"www.abc.com\"]", "rule_name": "rule-jlce",
"time_unit": "second",
如果某一个插件不再提供服务,则可以将其删除。未绑定API的插件可直接删除,已绑 定API的需先解除绑定关系。
前提条件
已创建插件。
操作步骤
步骤1 登录管理控制台。