CreateRules - 批量创建转发规则

批量创建转发规则。

接口说明

调用该接口创建转发规则时,请注意以下事项:

  • 配置 Redirect 转发动作时,除了 HttpCode 参数外,其余参数不能都配置默认值。

  • 同一个转发规则配置多个转发动作时,Rewrite 转发动作必须配置 ForwardGroup 的动作类型。

  • CreateRules 接口属于异步接口,即系统返回一个实例 ID,但该多条转发规则尚未创建成功,系统后台的创建任务仍在进行。您可以调用 ListRules 查询多条转发规则的创建状态:
    • 当多条转发规则处于 Provisioning 状态时,表示多条转发规则正在创建中。

    • 当多条转发规则处于 Available 状态时,表示多条转发规则创建成功。

  • 一条转发规则最多支持添加的条件数(RuleConditions)和动作数(RuleActions)如下:
    • 条件数:基础版 5 条,标准版 10 条,WAF 增强版 10 条。

    • 动作数:基础版 3 条,标准版 5 条,WAF 增强版 5 条。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。

  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。

  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:

    • 对于必选的资源类型,用前面加 * 表示。

    • 对于不支持资源级授权的操作,用全部资源表示。

  • 条件关键字:是指云产品自身定义的条件关键字。

  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。

操作

访问级别

资源类型

条件关键字

关联操作

alb:CreateRules

create

*LoadBalancer

acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}

*ServerGroup

acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}

请求参数

名称

类型

必填

描述

示例值

ListenerId

string

应用型负载均衡实例监听 ID。

lsn-l16uo9y******

ClientToken

string

客户端 Token,用于保证请求的幂等性。

从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken 只支持 ASCII 字符。

说明

若您未指定,则系统自动使用 API 请求的 RequestId 作为 ClientToken 标识。每次 API 请求的 RequestId 不一样。

5A2CFF0E-5718-45B5-9D4D-70B3FF3898

DryRun

boolean

是否只预检此次请求,取值:

  • true:发送检查请求,不会创建多条转发规则。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码DryRunOperation

  • false(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行创建。

false

Rules

array<object>

转发规则列表。

array<object>

转发规则。

Priority

integer

转发规则优先级。

1

RuleActions

array

转发规则动作列表。

array<object>

转发规则动作。

FixedResponseConfig

object

返回固定内容动作配置。

Content

string

返回的固定内容。最大支持存储 1 KB,只支持 ASCII 字符。

test

ContentType

string

返回固定内容的格式。

取值:text/plaintext/csstext/htmlapplication/javascriptapplication/json

text/plain

HttpCode

string

返回的 HTTP 响应码,仅支持 2xx4xx5xx 数字型字符串,x 为任意数字。

200

ForwardGroupConfig

object

转发组动作配置。

ServerGroupTuples

array

转发到的目的服务器组列表。

object

转发到的目的服务器组。

ServerGroupId

string

服务器组标识。

sgp-ffm94ovy7lqw******

Weight

integer

权重。取值越大,权重越大,表示转发的访问请求更多。取值范围:0~100

  • 目的服务器组数为 1 时,未指定权重时默认值为 100

  • 目的服务器组数大于 1 时,需要用户指定权重值。

100

ServerGroupStickySession

object

服务器组之间会话保持。

Enabled

boolean

是否开启会话保持。取值:

  • true:开启。

  • false(默认值):不开启。

false

Timeout

integer

超时时间。单位:秒。取值范围:1~86400。默认值:1000

30

InsertHeaderConfig

object

插入头部动作配置。

Key

string

插入的头字段名称,长度为 1~40 个字符,支持大小写字母 a~z、数字、下划线(_)和短划线(-)。InsertHeaderConfig 中的头字段名称不能重复。

说明

不允许将头名称设置为以下字段(不区分大小写):slb-idslb-ipx-forwarded-forx-forwarded-protox-forwarded-eipx-forwarded-portx-forwarded-client-srcportconnectionupgradecontent-lengthtransfer-encodingkeep-alivetehostcookieremoteipauthorityx-forwarded-host

key

Value

string

插入的头字段内容。

  • ValueType 取值为 SystemDefined 时取值如下:
    • ClientSrcPort:客户端端口。

    • ClientSrcIp:客户端 IP 地址。

    • Protocol:客户端请求的协议(HTTP 或 HTTPS)。

    • SLBId:应用型负载均衡实例 ID。

    • SLBPort:应用型负载均衡实例监听端口。

  • ValueType 取值为 UserDefined 时:您可自定义头字段内容,限制长度为 1~128 个字符,支持通配符星号(*)、半角问号(?)和 ASCII 码值ch >= 32 && ch < 127范围内的可打印字符,不支持"。开头和结尾不能为空格。结尾不能为\

  • ValueType 取值为 ReferenceHeader 时:您可以引用请求头字段中的某一个字段,限制长度限制为 1~128 个字符,支持小写字母 a~z、数字、短划线(-)和下划线(_)。

value

ValueType

string

头字段内容类型。取值:

  • UserDefined:您自定义头字段内容。

  • ReferenceHeader:引用请求头中的某一个头字段内容。

  • SystemDefined:系统定义头字段内容。

SystemDefined

Order

integer

转发规则动作执行的顺序,取值范围:1~50000,按值从小到大执行动作。值不能为空,不能重复。

1

RedirectConfig

object

重定向配置。

说明

RedirectConfig 的参数,除了 httpCode 外,不能都使用默认值。

Host

string

要跳转的主机地址。取值:

  • ${host}(默认值):取此值时不支持和其他字符拼接使用。

  • 其他取值,字符集和格式限制如下:
    • 主机名长度为 3~128 个字符,支持小写字母 a~z、数字、短划线(-)、半角句号(.)以及通配符星号(*)、等号(=)、波浪线(~)、下划线(_)、加号(+)、反斜线(\)、脱字号(^)、感叹号(!)、美元符号($)、and(&)、竖线(|)、半角圆括号(())、方括号([])和半角问号(?)。

    • 主机名至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。

    • 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-),最左侧domainlable允许是星号(*)。

    • 短划线(-)不能出现在其它域标签的开头或结尾。

    • 通配符星号(*)和半角问号(?)可以出现在域标签的任意位置。

${host}

HttpCode

string

跳转方式。取值:301302303307308

301

Path

string

要跳转的路径。取值:

  • ${path}(默认值):可以引用 ${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:
    • 长度为 1~128 个字符,大小写敏感,支持通配符星号(*)和半角问号(?)作为通配符使用。

    • 必须以正斜线(/)开头,支持大小写字母、数字和特殊字符$-_.+/&~@:'*?,不支持“%#;!()[]^,”\",同时支持通配符星号(*)和半角问号(?)。

/

Port

string

要跳转的端口。

  • ${port}(默认值):该取值不支持和其他字符同时使用。

  • 其他取值:1~63335

443

Protocol

string

要跳转的协议。取值:

  • ${protocol}(默认值):取该值时仅支持单独使用,不支持修改或与其他字符拼接使用。

  • HTTP

  • HTTPS

说明
  • HTTPS 监听仅支持跳转 HTTPS 协议。

  • HTTP 监听支持跳转 HTTP 和 HTTPS 协议。

HTTPS

Query

string

要跳转的查询字符串。

  • ${query}(默认值):可以引用 ${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:
    • 长度为 1~128 个字符。

    • 支持可见字符,不支持空格和 #[]{}\|<>"。如果是字母则必须是小写字母。

${query}

RewriteConfig

object

重写配置。

说明

同一个转发规则配置多个动作时,RewriteConfig 动作使用时必须配置 ForwardGroup 的动作类型。

Host

string

内部跳转的目的主机地址。取值:

  • ${host}(默认值):该取值不支持和其他字符拼接。

  • 其他取值,字符格式限制如下:

    • 主机名长度为 3~128 个字符,支持小写字母 a~z、数字、短划线(-)、半角句号(.)以及通配符星号(*)、等号(=)、波浪线(~)、下划线(_)、加号(+)、反斜线(\)、脱字号(^)、感叹号(!)、美元符号($)、and(&)、竖线(|)、半角圆括号(())、方括号([])和半角问号(?)。

    • 主机名至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。

    • 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-),最左侧domainlable允许是星号(*)。

    • 短划线(-)不能出现在其它域标签的开头或结尾。通配符星号(*)和半角问号(?)可以出现在域标签的任意位置。

www.rewrite.alb

Path

string

要跳转的路径。取值:

  • ${path}(默认值):可以引用 ${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:
    • 长度为 1~128 个字符,大小写敏感,支持通配符星号(*)和半角问号(?)作为通配符使用。

    • 必须以正斜线(/)开头,支持大小写字母、数字和特殊字符$-_.+/&~@:'*?,不支持“%#;!()[]^,”\",同时支持通配符星号(*)和半角问号(?)。

/tea

Query

string

内部跳转的查询字符串。

  • ${query}(默认值):可以引用 ${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:
    • 长度为 1~128 个字符。

    • 支持可见字符,不支持空格和 #[]{}\|<>"。如果是字母则必须是小写字母。

${query}

Type

string

动作类型。取值:

  • ForwardGroup:转发至多个虚拟服务器组。

  • Redirect:重定向。

  • FixedResponse:返回固定内容。

  • Rewrite:重写。

  • InsertHeader:写入头字段。

  • RemoveHeader:删除头字段。

  • TrafficLimit:流量限速。

  • TrafficMirror:流量镜像。

  • Cors:跨域。

说明

一个转发规则必须包含有一条 ForwardGroup(转发至)、Redirect(重定向)或 FixedResponse(返回固定响应)转发动作,与其他类型转发动作并存时,必须放在最后执行。

ForwardGroup

TrafficLimitConfig

object

流量限速。

QPS

integer

每秒请求次数。取值范围:1~1000000

5000

PerIpQps

integer

单 IP 每秒请求次数。 取值范围:1 ~ 1000000

说明

如果同时配置 QPS 参数,PerIpQps 参数的取值必须小于 QPS 参数的取值。

100

TrafficMirrorConfig

object

流量镜像。

TargetType

string

镜像的目标类型。取值:

  • ForwardGroupMirror:表示镜像至服务器组。

ForwardGroupMirror

MirrorGroupConfig

object

镜像至服务器组

ServerGroupTuples

array

流量镜像至服务器组。

object

流量镜像至服务器组。

ServerGroupId

string

服务器组 ID。

sgp-u9cmf16iu69******

RemoveHeaderConfig

object

去除 HTTP 标头

Key

string

去除的头字段名称,长度为 1~40 个字符,支持大小写字母 a~z、数字、下划线(_)和短划线(-)。头字段名称不能重复用于 RemoveHeader 中。

  • 请求方向(Direction 取值为 Request):不允许将头名称设置为以下字段(不区分大小写):slb-idslb-ipx-forwarded-forx-forwarded-protox-forwarded-eipx-forwarded-portx-forwarded-client-srcportconnectionupgradecontent-lengthtransfer-encodingkeep-alivetehostcookieremoteipauthorityx-forwarded-host

  • 响应方向(Direction 取值为 Response):响应方向不允许将头名称设置为以下字段(不区分大小写):connectionupgradecontent-lengthtransfer-encoding

key

CorsConfig

object

跨域。

AllowOrigin

array

允许的访问来源。

string

允许的访问来源列表。支持只配置一个元素*,或配置一个或多个值。

  • 单个值必须以http://或者https://开头,后边加一个正确的域名或一级泛域名。(例:http://*.test.abc.example.com

  • 单个值可以不加端口,也可以指定端口,端口范围:1~65535

http://www.test.com

AllowMethods

array

选择跨域访问时允许的 HTTP 方法。

string

选择跨域访问时允许的 HTTP 方法。取值:

  • GET

  • POST

  • PUT

  • DELETE

  • HEAD

  • OPTIONS

  • PATCH

GET

AllowHeaders

array

允许跨域的 Header 列表。

string

允许跨域的 Header 列表。支持配置为*或配置一个或多个 value 值,多个 value 值用半角逗号(,)隔开。单个 value 值只允许包含大小写字母、数字,以及不在首尾的下划线(_)和短划线(-),最大长度限制为 32 个字符。

AllowHeader

ExposeHeaders

array

允许暴露的 Header 列表。

string

允许暴露的 Header。支持配置为*或配置一个或多个 value 值,多个 value 值用半角逗号(,)隔开。单个 value 值只允许包含大小写字母、数字,以及不在首尾的下划线(_)和短划线(-),最大长度限制为 32 个字符。

ExposeHeader

AllowCredentials

string

是否允许携带凭证信息。取值:

  • on:是。

  • off:否。

枚举值:

  • off :

    off

  • on :

    on

on

MaxAge

integer

预检请求在浏览器的最大缓存时间,单位:秒。

取值范围:-1~172800

600

RuleConditions

array

转发规则条件列表。

array<object>

转发规则条件。

CookieConfig

object

Cookie 条件配置。

Values

array

Cookie 键值对列表。

object

Cookie 键值对。

Key

string

Cookie 条件键。

  • 支持 1~100 个字符。

  • 支持可见字符和通配符星号(*)和半角问号(?),如果是字母必须为小写字母。

  • 不支持空格和;#[]{}\|<>&"

key

Value

string

Cookie 条件值。

  • 支持 1~100 个字符。

  • 支持可见字符和通配符星号(*)和半角问号(?),如果是字母必须为小写字母。

  • 不支持空格和;#[]{}\|<>&"

value

HeaderConfig

object

HTTP 标头条件配置。

Key

string

HTTP 标头键。

  • 支持 1~40 个字符。

  • 支持字母 a~z、数字、短划线(-)和下划线(_)。

  • 不支持 Cookie 和 Host。

port

Values

array

HTTP 标头值列表。

string

HTTP 标头值。同一个转发规则条件内头字段值不能重复。

  • 支持 1~128 个字符。

  • 支持 ASCII 码值ch >= 32 && ch < 127范围内可打印字符、星号(*)和半角问号(?)。不支持"

  • 开头和结尾不能为空格。结尾不能为\

5006

HostConfig

object

主机名条件配置。

Values

array

主机名列表。

string

主机名。一个转发规则条件中只能有一个主机名,并且取值不能重复。

  • 主机名长度为 3~128 个字符,支持小写字母 a~z、数字 0~9、短划线(-)、半角句号(.)、星号(*)、等号(=)、波浪线(~)、下划线(_)、加号(+)、反斜线(\)、脱字号(^)、感叹号(!)、美元符号($)、and(&)、竖线(|)、半角圆括号(())、方括号([])和半角问号(?)。

  • 主机名至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。

  • 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-),最左侧domainlable允许是星号(*)。

  • 短划线(-)不能出现在其它域标签的开头或结尾。通配符星号(*)和半角问号(?)可以出现在域标签的任意位置。

  • 对于<精确匹配和通配符>的输入框,首字符不可以为波浪线(~)。

  • 对于正则的输入框(<正则匹配(不区分大小写)>,首字符不可以为星号(*)。

www.example.com

MethodConfig

object

HTTP 请求方法条件配置。

Values

array

HTTP 请求方法列表。

string

请求方法。

取值:HEADGETPOSTOPTIONSPUTPATCHDELETE

PUT

PathConfig

object

路径条件配置。

Values

array

路径条件列表。

string

转发路径。取值范围:

  • 长度为 1~128 个字符,大小写敏感,支持星号(*)和半角问号(?)作为通配符使用。

  • 非正则表达式的 URL ,必须以正斜线(/)开头,支持字母、数字和特殊字符$-_.+/&~@:'*?,不支持“%#;!()[]^,”\",支持星号(*)和半角问号(?)作为通配符使用。

  • 正则表达式的 URL ,必须以~开头,支持大小写字母、数字和特殊字符.-_/=?~^*$:()[]+|

/test

QueryStringConfig

object

查询字符串条件配置。

Values

array

查询字符串条件键值对列表。

object

查询字符串条件键值对。

Key

string

查询字符串条件键。

  • 长度为 1~100 个字符。

  • 支持可见字符、通配符星号(*)和半角问号(?),如果是字母则必须为小写字母。不支持空格和#[]{}\|<>&"

key

Value

string

查询字符串条件值。

  • 长度为 1~128 个字符。

  • 支持小写字母、可见字符和通配符星号(*)和半角问号(?),不支持空格和#[]{}\|<>&"

value

ResponseHeaderConfig

object

响应 HTTP 标头配置。

Key

string

响应 HTTP 标头键。

  • 长度为 1~40 个字符。

  • 支持字母 a~z、数字、短划线(-)和下划线(_)。

  • 不支持 Cookie 和 Host。

key

Values

array

响应 HTTP 标头值列表。

string

响应 HTTP 标头值。

  • 长度为 1~128 个字符。

  • 支持 ASCII 码值ch >= 32 && ch < 127范围内可打印字符、小写字母以及通配符星号(*)和半角问号(?)。不支持"

  • 开头和结尾不能为空格。结尾不能为\

value

ResponseStatusCodeConfig

object

响应状态码配置。

Values

array

响应状态码列表。

string

响应状态码。

200

Type

string

转发条件类型。取值:

  • Host:主机。

  • Path:路径。

  • Header:HTTP 头字段。

  • QueryString:查询字符串。

  • Method:请求方法。

  • Cookie:Cookie。

  • SourceIp:源 IP。

  • ResponseHeader:响应 HTTP 头字段。

  • ResponseStatusCode:响应状态码。

枚举值:

  • Cookie :

    Cookie

  • Path :

    Path

  • ResponseHeader :

    ResponseHeader

  • SourceIp :

    SourceIp

  • Header :

    Header

  • ResponseStatusCode :

    ResponseStatusCode

  • QueryString :

    QueryString

  • Host :

    Host

  • Method :

    Method

SourceIp

SourceIpConfig

object

基于源 IP 业务流量匹配。

Values

array

基于源 IP 业务流量匹配。

string

添加一个或多个 IP 地址或者 IP 地址段。

一条转发规则中最多支持添加 5 条源 IP。

192.168.XX.XX/32

RuleName

string

转发规则名称。

rule-443-64

Direction

string

转发规则方向。

枚举值:

  • Response :

    Response

  • Request :

    Request

Request

Tag

array

标签列表。

object

标签。

Key

string

标签键。最多支持 128 个字符,不能以 aliyun 或 acs:开头,不能包含 http://或 https://。

test_tag_key

Value

string

标签值。最多支持 128 个字符,不能以 aliyun 或 acs:开头,不能包含 http://或 https://。

test_tag_value

返回参数

名称

类型

描述

示例值

object

创建多条转发规则。

JobId

string

异步任务 ID。

72dcd26b-f12d-4c27-b3af-18f6aed5****

RequestId

string

请求 ID。

365F4154-92F6-4AE4-92F8-7FF34B540710

RuleIds

array<object>

转发规则列表。

object

转发规则列表。

RuleId

string

转发规则 ID。

rule-a3x3pg1yohq3lq****

Priority

integer

转发规则优先级,取值范围:1~10000。值越小表示优先级越高。

说明

同一个监听内规则优先级必须唯一。

10

示例

正常返回示例

JSON格式

{
  "JobId": "72dcd26b-f12d-4c27-b3af-18f6aed5****",
  "RequestId": "365F4154-92F6-4AE4-92F8-7FF34B540710",
  "RuleIds": [
    {
      "RuleId": "rule-a3x3pg1yohq3lq****",
      "Priority": 10
    }
  ]
}

错误码

HTTP status code

错误码

错误信息

描述

400 IncorrectStatus.Listener The status of %s [%s] is incorrect. 监听的当前状态不支持本次操作。
400 OperationDenied.IpGroupCanNotUsedForMirrorAction The operation is not allowed because of %s. 操作被拒绝,原因是%s。
400 OperationDenied.SameGroupForForwardAndMirrorAction The operation is not allowed because of %s. 操作被拒绝,原因是%s。
400 OperationDenied.GRPCServerGroup The operation is not allowed because of %s. 操作被拒绝,原因是存在绑定本GRPC服务器组的监听没有启用HTTP2.0。
400 Conflict.Priority There is already %s having the same configuration with %s. 优先级冲突,已经存在相同配置
400 ResourceQuotaExceeded.LoadBalancerRulesNum The quota of %s is exceeded for resource %s, usage %s/%s. 转发规则数已超额度限制。
400 ResourceQuotaExceeded.ServerGroupAttachedNum The quota of %s is exceeded for resource %s, usage %s/%s. 服务器组可被关联数已超额度限制。
400 ResourceQuotaExceeded.LoadBalancerServersNum The quota of %s is exceeded for resource %s, usage %s/%s. 后端服务器数已超额度限制。
400 ResourceQuotaExceeded.ServerAddedNum The quota of %s is exceeded for resource %s, usage %s/%s. 服务器添加到组已超额度限制。
400 QuotaExceeded.RuleWildcardsNum The quota of %s is exceeded, usage %s/%s. 配额%s已超额度限制,目前已使用%s,配额为%s。
400 QuotaExceeded.RuleMatchEvaluationsNum The quota of %s is exceeded, usage %s/%s. 转发规则条件数已超额度限制。
400 QuotaExceeded.RuleActionsNum The quota of %s is exceeded, usage %s/%s. 配额%s已超额度限制,目前已使用%s,配额为%s。
400 Mismatch.VpcId The %s is mismatched for %s and %s. %s在%s和%s中不匹配。
400 Mismatch.Protocol The %s is mismatched for %s and %s. %s在%s和%s中不匹配。
400 OperationDenied.RewriteMissingForwardGroup The operation is not allowed because of RewriteMissingForwardGroup. 操作被拒绝,原因是RewriteMissingForwardGroup。
400 OperationDenied.MirrorActionSupportHttpGroupOnly The operation is not allowed because of MirrorActionSupportHttpGroupOnly. 操作被拒绝,原因是流量镜像动作只支持HTTP类型的服务器组。
400 OperationDenied.ProtocolMustSameForForwardGroupAction The operation is not allowed because of ProtocolMustSameForForwardGroupAction. 操作被禁止,原因:必须是相同的协议
404 ResourceNotFound.Listener The specified resource %s is not found. 监听不存在。
404 ResourceNotFound.ServerGroup The specified resource %s is not found. 后端服务器组不存在。

访问错误中心查看更多错误码。

变更历史

更多信息,参考变更详情