CreateRule - 创建转发规则

在指定监听下创建转发规则。

接口说明

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

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

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

  • CreateRule 接口属于异步接口,即系统返回一个实例 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:CreateRule

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-70B******

DryRun

boolean

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

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

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

false

Priority

integer

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

说明

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

10

Direction

string

转发规则的方向。取值:

  • Request(默认值):请求类型,对从客户端发送到 ALB 的报文进行条件匹配并进行相应的处理。

  • Response:响应类型,对从后端服务器组返回到 ALB 的报文进行条件匹配并进行相应的处理。

说明

基础版的 ALB 实例不支持 Response 类型。

Request

RuleActions

array<object>

转发规则动作列表。

array<object>

规则动作列表。

FixedResponseConfig

object

固定响应内容配置。

Content

string

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

dssacav

ContentType

string

返回固定内容的格式。

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

text/plain

HttpCode

string

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

200

ForwardGroupConfig

object

转发到的目的服务器组列表。一条转发规则中最多支持添加 5 个目的服务器组。

ServerGroupTuples

array

转发到的目的服务器组列表。一条转发规则中最多支持添加 5 个目的服务器组。

object

转发到的目的服务器组结构。

ServerGroupId

string

转发到的目的服务器组。

sgp-k86c1ov501id6p****

Weight

integer

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

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

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

100

ServerGroupStickySession

object

服务器组之间会话保持。

Enabled

boolean

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

  • true:开启。

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

false

Timeout

integer

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

100

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、数字、短划线(-)和下划线(_)。

UserDefined

ValueType

string

头字段内容类型。取值:

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

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

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

UserDefined

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 个字符,大小写敏感,支持通配符星号(*)和半角问号(?)作为通配符使用。

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

/test

Port

string

要跳转的端口。

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

  • 其他取值:1~63335

10

Protocol

string

要跳转的协议。取值:

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

  • HTTP

  • HTTPS

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

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

HTTP

Query

string

要跳转的查询字符串。

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

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

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

${query}

RewriteConfig

object

重写配置。

说明

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

Host

string

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

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

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

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

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

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

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

www.example.com

Path

string

要跳转的路径。取值:

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

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

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

/tsdf

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

100

PerIpQps

integer

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

说明

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

80

TrafficMirrorConfig

object

流量镜像。

TargetType

string

镜像的目标类型。取值:

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

ForwardGroupMirror

MirrorGroupConfig

object

流量镜像至服务器组。

ServerGroupTuples

array

流量镜像至服务器组。

object

流量镜像至服务器组。

ServerGroupId

string

服务器组 ID。

sgp-00mkgijak0w4qgz9****

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

test

CorsConfig

object

跨域。

AllowOrigin

array

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

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

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

string

允许访问的来源。

http://example.com

AllowMethods

array

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

string

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

  • GET

  • POST

  • PUT

  • DELETE

  • HEAD

  • OPTIONS

  • PATCH

GET

AllowHeaders

array

允许跨域的 Header 列表。

string

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

test_123

ExposeHeaders

array

允许暴露的 Header 列表。

string

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

test_123

AllowCredentials

string

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

  • on:是。

  • off:否。

on

MaxAge

integer

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

取值范围:-1~172800

1000

RuleConditions

array<object>

转发规则条件列表。

array<object>

转发规则条件。

CookieConfig

object

Cookie 配置。

Values

array

Cookie 值列表。

object

Cookie 值结构体。

Key

string

Cookie 键。

  • 支持 1~100 个字符。

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

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

test

Value

string

Cookie 值。

  • 支持 1~100 个字符。

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

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

test

HeaderConfig

object

头字段配置。

Key

string

头字段键。

  • 支持 1~40 个字符。

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

  • 不支持 Cookie 和 Host。

Port

Values

array

头字段值列表。

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.edu

MethodConfig

object

请求方法配置。

Values

array

请求方法列表。

string

请求方法。

取值:HEADGETPOSTOPTIONSPUTPATCHDELETE

PUT

PathConfig

object

转发路径配置。

Values

array

转发路径列表。

string

转发路径。取值范围:

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

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

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

/test

QueryStringConfig

object

查询字符串配置。

Values

array

查询字符串列表。

object

查询字符串。

Key

string

查询字符串键。

  • 长度为 1~100 个字符。

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

test

Value

string

查询字符串值。

  • 长度为 1~128 个字符。

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

test

ResponseStatusCodeConfig

object

响应状态码配置。

Values

array

响应状态码列表。

string

响应状态码。

test

ResponseHeaderConfig

object

标头条件配置。

Key

string

头字段键。

  • 长度为 1~40 个字符。

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

  • 不支持 Cookie 和 Host。

test

Values

array

头字段值列表。

string

头字段值。

  • 长度为 1~128 个字符。

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

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

50006

Type

string

转发规则类型。取值:

  • Host:主机。

  • Path:路径。

  • Header:HTTP 头字段。

  • QueryString:查询字符串。

  • Method:请求方法。

  • Cookie:Cookie。

  • SourceIp:源 IP。

  • ResponseHeader:响应 HTTP 头字段。

  • ResponseStatusCode: 响应状态码。

Host

SourceIpConfig

object

基于源 IP 业务流量匹配配置。当 TypeSourceIP 时必选且有效。

Values

array

基于源 IP 业务流量匹配列表。

string

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

192.168.0.0/32

RuleName

string

转发规则名称。

  • 长度为 2~128 个英文或中文字符。

  • 必须以大小字母或中文开头,可包含数字,半角句号(.),下划线(_)和短划线(-)。

rule-doc

Tag

array<object>

标签列表。

object

标签结构。

Key

string

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

env

Value

string

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

product

返回参数

名称

类型

描述

示例值

object

返回数据结构体。

JobId

string

异步任务 ID。

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

RequestId

string

请求 ID。

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

RuleId

string

转发规则 ID。

rule-a3x3pg1yohq3lq****

示例

正常返回示例

JSON格式

{
  "JobId": "72dcd26b-f12d-4c27-b3af-18f6aed5****",
  "RequestId": "365F4154-92F6-4AE4-92F8-7FF34B540750",
  "RuleId": "rule-a3x3pg1yohq3lq****"
}

错误码

HTTP status code

错误码

错误信息

描述

400 IncorrectStatus.Listener The status of %s [%s] is incorrect. 监听的当前状态不支持本次操作。
400 OperationDenied.SameGroupForForwardAndMirrorAction The operation is not allowed because of %s. 操作被拒绝,原因是%s。
400 OperationDenied.IpGroupCanNotUsedForMirrorAction 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.Protocol The %s is mismatched for %s and %s. %s在%s和%s中不匹配。
400 Mismatch.VpcId The %s is mismatched for %s and %s. %s在%s和%s中不匹配。
400 OperationDenied.RewriteMissingForwardGroup The operation is not allowed because of RewriteMissingForwardGroup. 操作被拒绝,原因是RewriteMissingForwardGroup。
400 ResourceInConfiguring.Listener The specified listener is being configured, please try again later. 资源正在变配中,请稍后重试。
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. 后端服务器组不存在。

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

变更历史

更多信息,参考变更详情