You need to enable JavaScript to run this app.
导航
流控策略概述
最近更新时间:2024.11.14 15:46:31首次发布时间:2024.11.14 15:46:31

流控策略(QoSPolicy)是一种管理对象存储访问流量资源的策略,支持按照用户需求管理多业务访问资源组的流控能力,保障多种业务在访问同一份存储资源情况下流量互不干扰,高效运行。

适用场景

流控策略支持按照账号、用户、角色等维度限制访问 TOS 资源组的流量,支持流控策略生效资源范围为 TOS 所有桶、指定桶或桶内指定对象等多种资源组合,实现多个业务隔离,确保不同业务之间的资源使用不会相互影响,适用于多租户、多部门、多产品使用 TOS 的场景。

参数说明

Statement 是主要策略元素的容器,可以在一个策略中包含多个语句,每个 Statement 包含以下参数。

参数
是否必选
说明
示例

Sid

可选

策略名称,限制如下:

  • 策略名称不能重复。
  • 只能包含大小写字母、数字、中划线(-)、下划线(_)、英文句号(.)、英文冒号(:)、百分号(%)。
  • 长度限制在 1~255 字符之间。

如果不填,则 TOS 会自动生成策略名称。

{"Sid":"Test"}

Quota

必填

设置流控类别,取值说明如下:

  • WritesQps:写请求的 QPS,值必须是正整数。
  • ReadsQps:读请求的 QPS,值必须是正整数。
  • ListQps:List 请求的 QPS,值必须是正整数。
  • WritesRate:上传带宽,单位为 Mbps,值必须是正整数。
  • ReadsRate:下载带宽,单位为 Mbps,值必须是正整数。
{
    "WritesQps": "100",
    "ReadsQps": "100",
    "ListQps": "100",
    "WritesRate": "10",
    "ReadsRate": "10"
}

Resource

必填

设置流控策略作用的资源。

  • 以字符串形式表示,不区分大小写,格式为 "Resource": ["trn:tos:::{BucketName}/{Object}"]
  • 支持通配符 *,说明如下:
    • 将通配符 *设置在桶上,表示所有桶,例如 "trn:tos:::*"
    • 将通配符 *设置在对象上,表示桶内所有资源,例如"trn:tos:::bucketname/*"
    • 将通配符设置在对象前缀上,表示该前缀的所有对象,例如 "trn:tos:::bucketname/objectPrefix*"
"Resource":[
"trn:tos:::*", // 流控策略作用于所有桶
"trn:tos:::bucketname/*", // 流控策略作用于 bucketname 桶下的所有对象
"trn:tos:::bucketname/objectPrefix*" // 流控策略作用于 bucketname 桶下前缀为 objectPrefix 的对象
]

Principal

必填

指定需要进行流控的账号、IAM 用户或角色。

{
    "Principal": [
            // 对 200000**** 下的 tos_role 角色进行流控
            "trn:iam::200000****:role/tos_role",
            // 对 200000**** 下 的 tos_user 用户进行流控
            "trn:iam::200000****:user/tos_user",
            // 对 200001**** 进行流控。
            "trn:iam::200001****:root"
            // 对所有用户进行流控
            "*"
        ]

}

Condition

可选

指定流控策略在哪些情况下生效。关于条件的详细说明,请参见条件说明

"Condition": {
        "IpAddress": {
                "SourceIp": [
                        "192.168.0.1",
                        "192.168.0.3"
                ]
        }
}

流控策略示例如下:
以下策略设置 aaa 子用户在 bucketname 桶的上传带宽上限为 5000 Mbps。更多流控策略案例,请参见流控策略使用案例

{
  "Statement": [
    {
      "Sid": "test",
      "Quota": {
        "WritesQps": "",
        "ReadsQps": "",
        "ListQps": "",
        "WritesRate": "5000",
        "ReadsRate": ""
      },
      "Principal": [
        "trn:iam::200000****:user/aaa"
      ],
      "Resource": "trn:tos:::bucketname/*"
    }
  ]
}

条件说明

条件决定流控策略生效的要求,只有请求信息满足条件时,流控策略才会生效。条件由条件键、条件运算符及值组成。流控策略支持的条件如下。

支持的条件

类型

键说明

值说明

CurrentTime

Date

服务器接收请求的时间,UTC 时间,格式必须为 ISO 8601,基本格式为 yyyy-MM-ddTHH:mmZ(UTC 时间)。

输入 ISO 8601 格式的日期。
例如设置条件为 CurrentTime 大于 2023-10-13T15:00:00Z,则被授予流控策略的账号执行相应动作时,请求时间必须大于 2023-10-13T15:00:00Z,否则流控策略不会生效。

EpochTime

Numeric

自 1970 年 1 月 1 日(UTC/GMT 午夜)来经过的秒数,不包括闰秒。

输入秒数。
例如设置条件为 EpochTime 大于 1697187692,则被授予流控策略的账号执行相应动作时,请求时间必须大于 1697187692,否则流控策略不会生效。

SourceIp

String

请求发起的源 IP。

输入 IP 地址或者 IP 段,如有多个 IP 请以英文逗号分隔。
例如设置条件为 SourceIp 等于 192.168.0.1,则被授予流控策略的账号执行相应动作时,请求发起的源 IP 必须为 192.168.0.1,否则流控策略不会生效。

SourceVpc

String

请求所在的 VPC。

输入 VPC ID。
例如设置条件为 SourceVpc 等于 vpc-2d****ez0n,则被授予流控策略的账号执行相应动作时,请求所在的 VPC 必须是 vpc-2d****ez0n,否则流控策略不会生效。

UserAgent

String

请求的客户端代理程序。

输入 Agent 详细信息和通配符(*)。
例如设置条件为 UserAgent 等于 tos go sdk v2.6.0,则被授予流控策略的账号执行相应动作时,请求的客户端代理程序必须为 tos go sdk v2.6.0,否则流控策略不会生效。

Referer

String

请求发起的链接。

输入 URL。
例如设置条件为 Referer 等于 http://console.volcengine.com,则被授予流控策略的账号执行相应动作时,请求头必须为 http://console.volcengine.com,否则流控策略不会生效。

AccessPoint

String

请求访问的域名。

输入访问域名。
例如设置条件为 AccessPoint 等于 bucktename.tos-cn-beijing.volces.com,则被授予流控策略的账号执行相应动作时,请求访问的域名必须为 bucktename.tos-cn-beijing.volces.com,否则流控策略不会生效。

NetPlane

String

请求来源的网络平面。

仅支持配置 public,表示请求来源为公网。
例如设置条件为 NetPlane 等于 public,则被授予流控策略的账号执行相应动作时,请求来源必须为公网,否则流控策略不会生效。

运算符说明

流控策略中不同的条件对应了不同的运算符,详细说明如下所示。

适用条件

运算符说明

  • UserAgent
  • Referer
  • SourceVPC
  • AccessPoint
  • 等于:与设置的条件值完全匹配。
  • 不等于:与设置的条件值不匹配。
  • 等于(不区分大小写):忽略大小写后,与设置的条件值完全匹配。
  • 不等于(不区分大小写):忽略大小写后,与设置的条件值不完全匹配。
  • Like:支持通配符(*)的正则匹配,例如 like abc*,就是以 abc 开头的所有字符,区分大小写。
  • Not Like:支持通配符(*)的正则匹配,例如 Not like abc*,就是除以 abc 开头的所有字符,区分大小写。
  • CurrentTime
  • EpochTime
  • 等于:与设置的条件值相等。
  • 不等于:与设置的条件值不相等。
  • 小于:小于设置的条件值。
  • 小于等于:小于等于设置的条件值。
  • 大于:大于设置的条件值。
  • 大于等于:大于等于设置的条件值。
  • SourceIp
  • NetPlane
  • 等于:与设置的条件值相等。
  • 不等于:与设置的条件值不相等。

配置方法

流控策略支持两种配置方式,您可以参考以下内容,选择合适的配置方式: