调用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代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String CreateRule

要执行的操作。取值:CreateRule

ListenerId String lsr-bp1bpn0kn908w4nbw****

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

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

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

由客户端生成该参数值,要保证在不同请求间唯一。ClientToken只支持ASCII字符。

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

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

  • true:发送检查请求,不会创建转发规则。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码DryRunOperation
  • false(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。
Priority Integer 10

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

说明 同一个监听内规则优先级必须唯一。
Direction String Request

转发规则的方向。取值:

  • Request(默认值):请求类型,对从客户端发送到ALB的报文进行条件匹配并进行相应的处理。
  • Response:响应类型,对从后端服务器组返回到ALB的报文进行条件匹配并进行相应的处理。
说明 基础版的ALB实例不支持Response类型。
RuleActions.N.FixedResponseConfig.Content String dssacav

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

RuleActions.N.FixedResponseConfig.ContentType String text/plain

返回固定内容的格式。

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

RuleActions.N.FixedResponseConfig.HttpCode String HTTP_200

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

RuleActions.N.ForwardGroupConfig.ServerGroupTuples.N.ServerGroupId String sgp-k86c1ov501id6p****

转发到的目的服务器组。

RuleActions.N.ForwardGroupConfig.ServerGroupTuples.N.Weight Integer 100

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

  • 目的服务器组数为1时,未指定权重时默认值为100
  • 目的服务器组数大于1时,需要用户指定权重值。
RuleActions.N.ForwardGroupConfig.ServerGroupStickySession.Enabled Boolean false

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

  • true:开启。
  • false(默认值):不开启。
RuleActions.N.ForwardGroupConfig.ServerGroupStickySession.Timeout Integer 100

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

RuleActions.N.InsertHeaderConfig.Key String key

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

说明 不允许将头名称设置为以下字段(不区分大小写):slb-idslb-ipx-forwarded-forx-forwarded-protox-forwarded-eipx-forwarded-portx-forwarded-client-srcportconnectionupgradecontent-lengthtransfer-encodingkeep-alivetehostcookieremoteipauthority
RuleActions.N.InsertHeaderConfig.Value String UserDefined

插入的头字段内容。

  • 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、数字、短划线(-)和下划线(_)。
RuleActions.N.InsertHeaderConfig.ValueType String UserDefined

头字段内容类型。取值:

  • UserDefined:您自定义头字段内容。
  • ReferenceHeader:引用请求头中的某一个头字段内容。
  • SystemDefined:系统定义头字段内容。
RuleActions.N.Order Integer 1

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

RuleActions.N.RedirectConfig.Host String ${host}

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

  • ${host}(默认值):取此值时不支持和其他字符拼接使用。
  • 其他取值,字符集和格式限制如下:
    • 主机名长度为3~128个字符,支持小写字母a~z、数字、短划线(-)、半角句号(.)以及通配符星号(*)、等号(=)、波浪线(~)、下划线(_)、加号(+)、反斜线(\)、脱字号(^)、感叹号(!)、美元符号($)、and(&)、竖线(|)、半角圆括号(())、方括号([])和半角问号(?)。
    • 主机名至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。
    • 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-),最左侧domainlable允许是星号(*)。
    • 短划线(-)不能出现在其它域标签的开头或结尾。
    • 通配符星号(*)和半角问号(?)可以出现在域标签的任意位置。
RuleActions.N.RedirectConfig.HttpCode String 301

跳转方式。取值:301302303307308

RuleActions.N.RedirectConfig.Path String /test

要跳转的路径。取值:

  • ${path}(默认值):可以引用${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
  • 其他取值,字符集和格式限制如下:
    • 长度为1~128个字符,大小写敏感,支持通配符星号(*)和半角问号(?)作为通配符使用。
    • 必须以正斜线(/)开头,支持大小写字母、数字和特殊字符$-_.+/&~@:'*?,不支持“%#;!()[]^,” ,同时支持通配符星号(*)和半角问号(?)。
RuleActions.N.RedirectConfig.Port String 10

要跳转的端口。

  • ${port}(默认值):该取值不支持和其他字符同时使用。
  • 其他取值:1~63335
RuleActions.N.RedirectConfig.Protocol String HTTP

要跳转的协议。

  • ${protocol}(默认值):取该值时不支持和其他字符拼接使用。
  • HTTPHTTPS
说明 HTTPS监听仅支持跳转HTTPS协议。
RuleActions.N.RedirectConfig.Query String ${query}

要跳转的查询字符串。

  • ${query}(默认值):可以引用${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
  • 其他取值,字符集和格式限制如下:
    • 长度为1~128个字符。
    • 支持可见字符,不支持空格和 #[]{}\|<>&。如果是字母则必须是小写字母。
RuleActions.N.RewriteConfig.Host String www.example.com

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

  • ${host}(默认值):该取值不支持和其他字符拼接。
  • 其他取值,字符格式限制如下:
    • 主机名长度为3~128个字符,支持小写字母a~z、数字、短划线(-)、半角句号(.)以及通配符星号(*)、等号(=)、波浪线(~)、下划线(_)、加号(+)、反斜线(\)、脱字号(^)、感叹号(!)、美元符号($)、and(&)、竖线(|)、半角圆括号(())、方括号([])和半角问号(?)。
    • 主机名至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。
    • 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-),最左侧domainlable允许是星号(*)。
    • 短划线(-)不能出现在其它域标签的开头或结尾。通配符星号(*)和半角问号(?)可以出现在域标签的任意位置。
RuleActions.N.RewriteConfig.Path String /tsdf

要跳转的路径。取值:

  • ${path}(默认值):可以引用${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
  • 其他取值,字符集和格式限制如下:
    • 长度为1~128个字符,大小写敏感,支持通配符星号(*)和半角问号(?)作为通配符使用。
    • 必须以正斜线(/)开头,支持大小写字母、数字和特殊字符$-_.+/&~@:'*?,不支持“%#;!()[]^,” ,同时支持通配符星号(*)和半角问号(?)。
RuleActions.N.RewriteConfig.Query String ${query}

内部跳转的查询字符串。

  • ${query}(默认值):可以引用${host}${protocol}${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
  • 其他取值,字符集和格式限制如下:
    • 长度为1~128个字符。
    • 支持可见字符,不支持空格和 #[]{}\|<>&。如果是字母则必须是小写字母。
RuleActions.N.Type String ForwardGroup

动作类型。取值:

  • ForwardGroup:转发至多个虚拟服务器组。
  • Redirect:重定向。
  • FixedResponse:返回固定内容。
  • Rewrite:重写。
  • InsertHeader:写入头字段。
  • RemoveHeaderConfig:删除头字段。
  • TrafficLimitConfig:流量限速。
  • TrafficMirrorConfig:流量镜像。
  • CorsConfig:跨域。

转发规则中包括的动作类型:

  • FinalType:一个转发规则的动作中仅能有一项FinalType的动作并且最后执行,只能包含一项ForwardGroupRedirect、或FixedResponse
  • ExtType:一个转发规则可以有一项或多项此类ExtType的动作,在FianlType的动作之前执行,且需要与FinalType并存。包含多项InsertHeader或一项Rewrite
RuleActions.N.TrafficLimitConfig.QPS Integer 100

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

RuleActions.N.TrafficLimitConfig.PerIpQps Integer 80

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

说明 如果同时配置QPS参数,PerIpQps参数的取值必须小于QPS参数的取值。
RuleActions.N.TrafficMirrorConfig.TargetType String ForwardGroupMirror

镜像的目标类型。取值:

  • ForwardGroupMirror:表示镜像至服务器组。
  • SlsMirror:表示镜像至日志服务。
RuleActions.N.TrafficMirrorConfig.MirrorGroupConfig.ServerGroupTuples.N.ServerGroupId String sgp-00mkgijak0w4qgz9****

服务器组ID。

RuleActions.N.CorsConfig.AllowOrigin.N String http://example.com

允许访问的来源。支持配置为*或配置为一个或多个value值。value的值不能为*

  • 单个value值必须以http://或者https://开头,后面加一个正确的域名或者一级的泛域名(例如,*.test.abc.example.com)。
  • 单个value值可以不加端口,也可以指定端口,端口范围:1~65535
RuleActions.N.CorsConfig.AllowMethods.N String GET

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

  • GET
  • POST
  • PUT
  • DELETE
  • HEAD
  • OPTIONS
  • PATCH
RuleActions.N.CorsConfig.AllowHeaders.N String test_123

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

RuleActions.N.CorsConfig.ExposeHeaders.N String test_123

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

RuleActions.N.CorsConfig.AllowCredentials String on

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

  • on:是。
  • off:否。
RuleActions.N.CorsConfig.MaxAge Long 1000

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

取值范围:-1~172800

RuleConditions.N.CookieConfig.Values.N.Key String test

Cookie键。

  • 支持1~100个字符。
  • 支持可见字符和通配符星号(*)和半角问号(?),如果是字母必须为小写字母。
  • 不支持空格和;#[]{}\|<>&
RuleConditions.N.CookieConfig.Values.N.Value String test

Cookie值。

  • 支持1~100个字符。
  • 支持可见字符和通配符星号(*)和半角问号(?),如果是字母必须为小写字母。
  • 不支持空格和;#[]{}\|<>&
RuleConditions.N.HeaderConfig.Key String Port

头字段键。

  • 支持1~40个字符。
  • 支持字母a~z、数字、短划线(-)和下划线(_)。
  • 不支持Cookie和Host。
RuleConditions.N.HeaderConfig.Values.N String 5006

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

  • 支持1~128个字符。
  • 支持ASCII码值ch >= 32 && ch < 127范围内可打印字符、星号(*)和半角问号(?)。
  • 开头和结尾不能为空格。
RuleConditions.N.HostConfig.Values.N String www.example.edu

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

  • 主机名长度为3~128个字符,支持小写字母a~z、数字0~9、短划线(-)、半角句号(.)、星号(*)、等号(=)、波浪线(~)、下划线(_)、加号(+)、反斜线(\)、脱字号(^)、感叹号(!)、美元符号($)、and(&)、竖线(|)、半角圆括号(())、方括号([])和半角问号(?)。
  • 主机名至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。
  • 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-),最左侧domainlable允许是星号(*)。
  • 短划线(-)不能出现在其它域标签的开头或结尾。通配符星号(*)和半角问号(?)可以出现在域标签的任意位置。
  • 对于<精确匹配和通配符>的输入框,首字符不可以为波浪线(~)。
  • 对于正则的输入框(<正则匹配(不区分大小写)>,首字符不可以为星号(*)。
RuleConditions.N.MethodConfig.Values.N String PUT

请求方法。

取值:HEADGETPOSTOPTIONSPUTPATCHDELETE

RuleConditions.N.PathConfig.Values.N String /test

转发路径。取值范围:

  • 长度为1~128个字符,大小写敏感,支持星号(*)和半角问号(?)作为通配符使用。
  • 非正则表达式的URL ,必须以正斜线(/)开头,支持字母、数字和特殊字符$-_.+/&~@:'*?,不支持“%#;!()[]^,” ,支持星号(*)和半角问号(?)作为通配符使用。
  • 正则表达式的URL ,必须以~开头,支持大小写字母、数字和特殊字符.-_/=?~^*$:()[]+|
RuleConditions.N.QueryStringConfig.Values.N.Key String test

查询字符串键。

  • 长度为1~100个字符。
  • 支持可见字符、通配符星号(*)和半角问号(?),如果是字母则必须为小写字母。不支持空格和#[]{}\|<>&
RuleConditions.N.QueryStringConfig.Values.N.Value String test

查询字符串值。

  • 长度为1~128个字符。
  • 支持小写字母、可见字符和通配符星号(*)和半角问号(?),不支持空格和#[]{}\|<>&
RuleConditions.N.Type String Host

转发规则类型。取值:

  • Host:主机。
  • Path:路径。
  • Header:HTTP头字段。
  • QueryString:查询字符串。
  • Method:请求方法。
  • Cookie:Cookie。
  • SourceIp:源IP。
RuleConditions.N.SourceIpConfig.Values.N String 192.168.0.0/32

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

RuleName String rule-doc

转发规则名称。

  • 长度为2~128个英文或中文字符。
  • 必须以大小字母或中文开头,可包含数字,半角句号(.),下划线(_)和短划线(-)。

返回数据

名称 类型 示例值 描述
JobId String 72dcd26b-f12d-4c27-b3af-18f6aed5****

异步任务ID。

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

请求ID。

RuleId String rule-a3x3pg1yohq3lq****

转发规则ID。

示例

请求示例

http(s)://[Endpoint]/?Action=CreateRule
&ListenerId=lsr-bp1bpn0kn908w4nbw****
&ClientToken=5A2CFF0E-5718-45B5-9D4D-70B3FF3898
&DryRun=false
&Priority=10
&Direction=Request
&RuleActions=[{"FixedResponseConfig":{"Content":"dssacav","ContentType":"text/plain","HttpCode":"HTTP_200"},"ForwardGroupConfig":{"ServerGroupTuples":[{"ServerGroupId":"sgp-k86c1ov501id6p****","Weight":100}],"ServerGroupStickySession":{"Enabled":false,"Timeout":100}},"InsertHeaderConfig":{"Key":"key","Value":"UserDefined","ValueType":"UserDefined"},"Order":1,"RedirectConfig":{"Host":"${host}","HttpCode":"301","Path":"/test","Port":"10","Protocol":"HTTP","Query":"${query}"},"RewriteConfig":{"Host":"www.example.com","Path":"/tsdf","Query":"${query}"},"Type":"ForwardGroup","TrafficLimitConfig":{"QPS":100,"PerIpQps":80},"TrafficMirrorConfig":{"TargetType":"ForwardGroupMirror","MirrorGroupConfig":{"ServerGroupTuples":[{"ServerGroupId":"sgp-00mkgijak0w4qgz9****"}]}},"CorsConfig":{"AllowOrigin":["http://example.com"],"AllowMethods":["GET"],"AllowHeaders":["test_123"],"ExposeHeaders":["test_123"],"AllowCredentials":"on","MaxAge":1000}}]
&RuleConditions=[{"CookieConfig":{"Values":[{"Key":"test","Value":"test"}]},"HeaderConfig":{"Key":"Port","Values":["5006"]},"HostConfig":{"Values":["www.example.edu"]},"MethodConfig":{"Values":["PUT"]},"PathConfig":{"Values":["/test"]},"QueryStringConfig":{"Values":[{"Key":"test","Value":"test"}]},"Type":"Host","SourceIpConfig":{"Values":["192.168.0.0/32"]}}]
&RuleName=rule-doc
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<CreateRuleResponse>
    <JobId>72dcd26b-f12d-4c27-b3af-18f6aed5****</JobId>
    <RequestId>365F4154-92F6-4AE4-92F8-7FF34B540750</RequestId>
    <RuleId>rule-a3x3pg1yohq3lq****</RuleId>
</CreateRuleResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

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

错误码

HttpCode 错误码 错误信息 描述
400 IncorrectStatus.Listener The status of %s [%s] is incorrect. 资源%s [%s]的状态无效。
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. 操作被拒绝,原因是%s。
400 Conflict.Priority There is already %s having the same configuration with %s. %s冲突,已经存在同配置的%s。
400 ResourceQuotaExceeded.LoadBalancerRulesNum The quota of %s is exceeded for resource %s, usage %s/%s. 配额%s已超额度限制,资源是%s,目前已使用%s,配额为%s。
400 ResourceQuotaExceeded.ServerGroupAttachedNum The quota of %s is exceeded for resource %s, usage %s/%s. 配额%s已超额度限制,资源是%s,目前已使用%s,配额为%s。
400 ResourceQuotaExceeded.LoadBalancerServersNum The quota of %s is exceeded for resource %s, usage %s/%s. 配额%s已超额度限制,资源是%s,目前已使用%s,配额为%s。
400 ResourceQuotaExceeded.ServerAddedNum The quota of %s is exceeded for resource %s, usage %s/%s. 配额%s已超额度限制,资源是%s,目前已使用%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. 配额%s已超额度限制,目前已使用%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. 资源正在变配中,请稍后重试。
404 ResourceNotFound.Listener The specified resource %s is not found. 资源%s不存在。
404 ResourceNotFound.ServerGroup The specified resource %s is not found. 资源%s不存在。

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