
# 配置API的流量控制
流量控制支持从用户、凭据和时间段等不同的维度限制对API的调用次数，保护后端服务。支持按分/秒粒度级别的流量控制。为了提供持续稳定的服务，您可以通过配置流控策略，针对部分API进行流量控制。
#### 操作视频
本视频演示如何在API网关服务上设置流量控制。
因产品功能演进，操作界面可能存在差异，相关视频仅供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object1627117261325" class="idp-external-video" src="https://res-static.hc-cdn.cn/cloudbu-site/china/zh-cn/support/apig-video/1686883444679872024.mp4" title="设置流量控制策略" poster="https://support.huaweicloud.com/usermanual-apig/zh-cn_image_0000002348416177.jpg" height="300.0000" width="600.0000"></video>
#### 约束与限制
- API配置流控策略相当于流控策略同步绑定了API。同一个环境中，一个API只能被一个流控策略绑定，但一个流控策略可以绑定多个API。
- 策略和API本身相互独立，只有为API绑定策略后，策略才对API生效。为API绑定策略时需指定发布环境，策略只对指定环境上的API生效。
- API的下线操作不影响策略的绑定关系，再次发布后仍然会带有下线前绑定的策略。
- 如果策略与API有绑定关系，则策略无法执行删除操作。
- NLB实例下，本策略暂不支持设置IPv6类型的源IP。
 
#### 创建流量控制策略
1. 进入[API网关控制台](https://console.huaweicloud.com/apig2/#/overview)页面。
2. 根据实际业务在左侧导航栏上方选择实例。

3. 在左侧导航栏选择"API管理 \> API策略"。
4. 在"策略管理"页面，单击"创建策略"。
5. 在"选择策略类型"弹窗中，选择"传统策略 \> 流量控制"。
6. 在"创建策略"弹窗中，根据下表参数说明，配置策略信息。 
   表1流量控制参数说明 
   | 参数      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 策略名称    | API流控策略名称。支持中文、英文、数字、下划线，且只能以英文或中文开头，长度为3\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 类型      | 分"基础流控"和"共享流控"两类。 - 基础流控针对**单个**API进行流量统计和控制。  - 共享流控针对绑定了该策略的**所有**API进行总流量统计和控制。                                                                                                                                                                                                                                  |
   | 时长      | 流量限制的时长，单位可选秒、分钟、小时、天。 - 与"API流量限制"配合使用，表示单位时间内的单个API请求次数上限。  - 与"用户流量限制"配合使用，表示单位时间内的单个用户请求次数上限。  - 与"凭据流量限制"配合使用，表示单位时间内的单个凭据请求次数上限。  - 与"源IP流量限制"配合使用，表示单位时间内的单个IP地址请求次数上限。   |
   | API流量限制 | 单个API被调用次数上限。 - 如果API未绑定流控策略，流控限制值为实例"[配置参数](https://support.huaweicloud.com/usermanual-apig/apig_03_0039.html)"中"ratelimit_api_limits"的参数运行值，"ratelimit_api_limits"为API全局默认流控值。  - API流量限制值不能超过API全局默认流控值。                                                                                                           |
   | 用户流量限制  | 单个用户调用API次数上限，**仅在API的安全认证方式为APP认证或IAM认证时适用**。 - 用户流量限制不超过"API流量限制"。  - 如果主账号下有多个子用户访问API，按主账号累计的调用次数进行限制。                                                                                                                                                                                                        |
   | 凭据流量限制  | 单个凭据调用API次数上限，**仅在API的安全认证方式为APP认证时** **适用**。 凭据流量限制不超过"用户流量限制"和"API流量限制"。                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 源IP流量限制 | 单个IP地址（客户端IP地址）调用API次数上限。您可以选择配置实例的"[real_ip_from_xff](https://support.huaweicloud.com/usermanual-apig/apig_03_0039.html)"参数，使用X-Forwarded-For头中的IP作为流控的判断依据。 源IP流量限制不超过"API流量限制"。                                                                                                                                                                                                                                                                                           |
   | 描述      | 关于控制策略的描述。长度为1\~255个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      
   
   
7. 单击"确定"。 
   - 在策略列表中显示已创建的流量控制策略，表示策略创建成功。
   
   - 如果需要对某个凭据进行流量控制，可以在"流量控制策略"中[为流量控制策略配置特殊凭据]。
   
   - 如果需要对某个租户进行流量控制，可以在"流量控制策略"中[为流量控制策略配置特殊租户]。
   
   
   
   
8. 策略创建后，您还需要[为策略绑定API]，才能使策略对API生效。
   
   **策略的绑定、解绑、更新会实时生效，不需要重新发布API。**
   
   
 
 #### 为策略绑定API
1. 单击策略名称，进入策略详情。
2. 在API列表区域选择环境后，单击"绑定API"。
3. 筛选API分组以及发布环境，勾选所需的API。 
   支持通过API名称或标签筛选API，标签为创建API时定义的标签。
   
   
4. 单击"确定"，绑定完成。 
   - 如果单个API不需要绑定此策略，单击API所在行的"解绑"。
   
   - 如果批量API不需要绑定此策略，则勾选待解绑的API，单击列表上方"解绑"。最多同时解绑1000个API。
   
   
   
   
 
 #### 为流量控制策略配置特殊凭据
如果希望对某个凭据进行流量控制，可以通过在流控策略中添加特殊凭据实现。把凭据添加到流控策略中后，该凭据的凭据流量限制受特殊凭据的阈值限制，API流量限制和用户流量限制受流控策略限制。
1. 在流控策略详情页面，单击"特殊凭据"页签，进入特殊凭据页面。
2. 单击"添加特殊凭据"，弹出"添加特殊凭据"对话框。
3. 通过以下两种方式，添加特殊凭据。 
   - 添加已有凭据：单击"已有凭据"，选择已有凭据，输入阈值。
   
   - 添加其他凭据：单击"其他"，输入其他用户的凭据ID和阈值。
   
   
   ![](https://support.huaweicloud.com/usermanual-apig/public_sys-resources/note_3.0-zh-cn.png)
   特殊凭据流控值和凭据流量限制值共同作用时，以特殊凭据流控值为准。
   例如：API流量限制值为10，凭据流量限制值为3，时长为1分钟，特殊凭据（凭据A）流控值为2，特殊凭据（凭据B）流控值为4，凭据A在1分钟内最多可以访问绑定了该流控策略的API 2次，凭据B在1分钟内最多可以访问绑定了该流控策略的API 4次。
   
   
 
 #### 为流量控制策略配置特殊租户
如果希望对某个租户进行流量控制，可以通过在流控策略中添加特殊租户实现。把租户添加到流控策略中后，该租户的用户流量限制受特殊租户的阈值限制，API流量限制和应用流量限制受流控策略限制。
1. 在流控策略详情页面，单击"特殊租户"，进入特殊租户页面。

2. 单击"添加特殊租户"，弹出"添加特殊租户"对话框。
3. 根据下表参数说明，输入租户信息。 
   表2特殊租户信息 
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 租户ID | 租户ID为账号ID或项目ID。 - 绑定APP认证的API时，租户ID为[项目ID](https://support.huaweicloud.com/api-apig/apig-api-180713009.html)。  - 绑定华为IAM认证的API时，租户ID为账号ID，不支持细分到IAM用户维度，获取账号ID操作请参考[获取账号名和账号ID](https://support.huaweicloud.com/api-apig/apig-api-180713005.html)章节。   |
   | 阈值   | 固定时间段内，此租户访问API流量的最大值。 不能超过API流量限制值。                                                                                                                                                                                                                                                                                                                                                              |
      
   
   
4. 单击"确定"，完成特殊租户的添加。 
   ![](https://support.huaweicloud.com/usermanual-apig/public_sys-resources/note_3.0-zh-cn.png)
   特殊租户流控值和用户流量限制值共同作用时，以特殊租户流控值为准。
   例如：API流量限制值为10，用户流量限制值为3，时长为1分钟，特殊租户（租户ID为A）流控值为2，特殊租户（租户ID为B）流控值为4，租户A在1分钟内最多可以访问绑定了该流控策略的API 2次，租户B在1分钟内最多可以访问绑定了该流控策略的API 4次。
   
   
 
#### 相关文档
相关错误码
| 错误码       | 错误现象                                       | HTTP状态码 | 语义      | 解决方案                                |
|:---|:---|:---|:---|:---|
| APIG.0308 | The throttling threshold has been reached. | 429     | 超出流控值限制 | 等待流控刷新后访问。如果触发调试域名的单日请求数上限，请绑定独立域名。 |
   
如果您希望通过API创建流量控制策略，请参考[创建流控策略](https://support.huaweicloud.com/api-apig/CreateRequestThrottlingPolicyV2.html)。
