ALIYUN::ALB::Rule类型用于创建转发规则。
语法
{
"Type": "ALIYUN::ALB::Rule",
"Properties": {
"RuleActions": List,
"Priority": Integer,
"RuleConditions": List,
"Direction": String,
"RuleName": String,
"ListenerId": String
}
}
属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
RuleActions |
List |
是 |
是 |
转发规则的动作列表。 |
更多信息,请参见RuleActions属性。
|
Priority |
Integer |
是 |
是 |
转发规则的优先级。 |
取值范围:1~10,000。取值越小,优先级越高。
|
RuleConditions |
List |
是 |
是 |
转发规则的条件列表。 |
更多信息,请参见RuleConditions属性。
|
Direction |
String |
否 |
否 |
转发规则的方向。 |
取值:
|
RuleName |
String |
是 |
是 |
转发规则的名称。 |
长度为2~128个字符。必须以英文字母或汉字开头,可包含英文字母、汉字、数字、半角句号(.)、下划线(_)和短划线(-)。 |
ListenerId |
String |
是 |
否 |
负载均衡实例监听ID。 |
无 |
RuleActions语法
"RuleActions": [
{
"Order": Integer,
"FixedResponseConfig": Map,
"Type": String,
"RedirectConfig": Map,
"ForwardGroupConfig": Map,
"InsertHeaderConfig": Map,
"RewriteConfig": Map
}
]
RuleActions属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Order |
Integer |
是 |
是 |
转发规则动作执行的顺序。 |
取值范围:1~50,000,按取值从小到大执行动作。
|
FixedResponseConfig |
Map |
否 |
是 |
固定响应内容配置。 |
更多信息,请参见FixedResponseConfig属性。
|
Type |
String |
是 |
是 |
动作类型。 |
取值:
- ForwardGroup:转发至多个虚拟服务器组。
- Redirect:重定向。
- FixedResponse:返回固定内容。
- Rewrite:重写。
- InsertHeader:写入头字段。
|
RedirectConfig |
Map |
否 |
是 |
重定向配置。 |
更多信息,请参见RedirectConfig属性。
|
ForwardGroupConfig |
Map |
否 |
是 |
转发组配置。 |
更多信息,请参见ForwardGroupConfig属性。
|
InsertHeaderConfig |
Map |
否 |
是 |
写入头字段配置。 |
更多信息,请参见InsertHeaderConfig属性。
|
RewriteConfig |
Map |
否 |
是 |
重写配置。 |
更多信息,请参见RewriteConfig属性。
|
FixedResponseConfig语法
"FixedResponseConfig": {
"HttpCode": String,
"ContentType": String,
"Content": String
}
FixedResponseConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
HttpCode |
String |
否 |
是 |
返回的HTTP响应码。 |
仅支持HTTP_2xx、HTTP_4xx、HTTP_5xx数字型字符串,x为任意数字。 |
ContentType |
String |
否 |
是 |
返回固定内容的格式。 |
取值:
- text/plain
- text/css
- text/html
- application/javascript
- application/json
|
Content |
String |
否 |
是 |
返回的固定内容。 |
最大支持存储1 KB,只支持ASCII字符。 |
RedirectConfig语法
"RedirectConfig": {
"Path": String,
"HttpCode": Integer,
"Query": String,
"Port": String,
"Host": String,
"Protocol": String
}
RedirectConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Path |
String |
否 |
是 |
要跳转的路径。 |
取值:
- ${path}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和参数支持的字符串拼接使用。
- 其他取值,字符集和格式限制如下:
- 长度为1~128个字符。
- 必须以正斜线(/)开头,支持字母、数字和特殊字符
$-_.+/&~@:, ,同时支持星号(*)和半角问号(?)。不支持%#;!()[]^,” 。
- 支持区分大小写英文字母。
|
HttpCode |
Integer |
否 |
是 |
跳转方式。 |
取值:
|
Query |
String |
否 |
是 |
要跳转的查询字符串。 |
取值:
- ${query}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
- 其他取值,字符集和格式限制如下:
- 长度为1~128个字符。
- 不支持空格和特殊字符
#[]{}\|<>& 。
- 仅支持小写英文字母。
|
Port |
String |
否 |
是 |
要跳转的端口。 |
取值:
- ${port}(默认值):该取值不支持和其他字符串同时使用。
- 其他取值:1~63,335。
|
Host |
String |
否 |
是 |
要跳转的主机地址。 |
取值:
- ${host}(默认值):该取值不支持和其他字符串拼接使用。
- 其他取值,字符集和格式限制如下:
- 主机名称长度为3~128个字符,支持小写英文字母、数字、短划线(-)、半角句号(.)、星号(*)和半角问号(?)。
- 主机名称至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。
- 最右侧的域标签只能包含英文字母和通配符,不能包含数字或短划线(-)。
- 短划线(-)不能出现在其他域标签的开头或结尾。
- 星号(*)和半角问号(?)可以出现在域标签的任意位置。
|
Protocol |
String |
否 |
是 |
要跳转的协议。 |
取值:
- ${protocol}(默认值):该取值不支持和其他字符串拼接使用。
- HTTP
- HTTPS
|
ForwardGroupConfig语法
"ForwardGroupConfig": {
"ServerGroupTuples": List
}
ServerGroupTuples语法
"ServerGroupTuples": [
{
"ServerGroupId": String
}
]
ServerGroupTuples属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
ServerGroupId |
String |
否 |
是 |
转发到的目的服务器组ID。 |
无 |
InsertHeaderConfig语法
"InsertHeaderConfig": {
"ValueType": String,
"Value": String,
"Key": String
}
InsertHeaderConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
ValueType |
String |
否 |
是 |
头字段内容类型。 |
取值:
- UserDefined:用户自定义头字段内容。
- ReferenceHeader:引用请求头中的某一个头字段内容。
- SystemDefined:系统定义头字段内容。
|
Value |
String |
否 |
是 |
插入的头字段内容。 |
取值:
|
Key |
String |
否 |
是 |
插入的头字段名称。 |
长度为1~40个字符,支持英文字母、数字、下划线(_)和短划线(-)。InsertHeaderConfig中的头字段名称不能重复。
说明 不允许将头字段名称设置为以下字段(不区分大小写):slb-id、slb-ip、x-forwarded-for、x-forwarded-proto、x-forwarded-eip、x-forwarded-port、x-forwarded-client-srcport、connection、upgrade、content-length、transfer-encoding、keep-alive、te、host、cookie、remoteip、authority。
|
RewriteConfig语法
"RewriteConfig": {
"Path": String,
"Query": String,
"Host": String
}
RewriteConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Path |
String |
否 |
是 |
要跳转的路径。 |
取值:
- ${path}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
- 其他取值,字符集和格式限制如下:
- 长度为1~128个字符。
- 必须以正斜线(/)开头,支持英文字母、数字和特殊字符
$-_.+/&~@: ,同时支持星号(*)和半角问号(?)。不支持%#;!()[]^“, 。
- 支持区分大小写英文字母。
|
Query |
String |
否 |
是 |
内部跳转的查询字符串。 |
取值:
- ${query}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
- 其他取值,字符集和格式限制如下:
- 长度为1~128个字符。
- 不支持空格和特殊字符
#[]{}\|<>& 。
- 仅支持小写英文字母。
|
Host |
String |
否 |
是 |
内部跳转的目的主机地址。 |
取值:
- ${host}(默认值):取此值时不支持和其他字符串拼接使用。
- 其他取值,字符集和格式限制如下:
- 主机名称长度为3~128个字符,支持小写英文字母、数字、短划线(-)、半角句号(.)、星号(*)和半角问号(?)。
- 主机名称至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。
- 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-)。
- 短划线(-)不能出现在其他域标签的开头或结尾。
- 星号(*)和半角问号(?)可以出现在域标签的任意位置。
|
RuleConditions语法
"RuleConditions": [
{
"MethodConfig": Map,
"PathConfig": Map,
"Type": String,
"ResponseHeaderConfig": Map,
"QueryStringConfig": Map,
"HostConfig": Map,
"CookieConfig": Map,
"HeaderConfig": Map
}
]
MethodConfig语法
"MethodConfig": {
"Values": List
}
MethodConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Values |
List |
否 |
是 |
请求方式。 |
取值:
- HEAD
- GET
- POST
- OPTIONS
- PUT
- PATCH
- DELETE
|
PathConfig语法
"PathConfig": {
"Values": List
}
PathConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Values |
List |
否 |
是 |
转发路径。 |
长度为1~128个字符。必须以正斜线(/)开头,可包含英文字母、数字、星号(*)、半角问号(?)和特殊字符$-_.+/&~@: ,不支持“%#;!()[]^,” 。英文字母区分大小写。
|
ResponseHeaderConfig语法
"ResponseHeaderConfig": {
"Values": List,
"Key": String
}
ResponseHeaderConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Values |
List |
否 |
是 |
报头的值。 |
无 |
Key |
String |
否 |
是 |
标题的键。 |
长度为1~40个字符。可包含英文字母、数字、短划线(-)和下划线(_)。不支持Cookie或Host。 |
QueryStringConfig语法
"QueryStringConfig": {
"Values": List
}
QueryStringConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Values |
List |
否 |
是 |
查询字符串。 |
无 |
HostConfig语法
"HostConfig": {
"Values": List
}
HostConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Values |
List |
否 |
是 |
主机名称。 |
取值要求如下:
- 一个转发规则条件中只能有一个主机名称,并且取值不能重复。
- 主机名称至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。
- 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-)。
- 短划线(-)不能出现在其他域标签的开头或结尾。星号(*)和半角问号(?)可以出现在域标签的任意位置。
|
CookieConfig语法
"CookieConfig": {
"Values": List
}
CookieConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Values |
List |
否 |
是 |
Cookie值列表。 |
无 |
HeaderConfig语法
"HeaderConfig": {
"Values": List,
"Key": String
}
HeaderConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Values |
List |
否 |
是 |
头字段值。 |
同一个转发规则条件内头字段值不能重复。长度为1~128个字符,支持ASCII码值ch >= 32 && ch < 127 范围内可打印字符、星号(*)和半角问号(?)。开头和结尾不能为空格。
|
Key |
String |
否 |
是 |
头字段键。 |
长度为1~40个字符。可包含小写英文字母、数字、短划线(-)和下划线(_)。不支持Cookie和Host。 |
返回值
Fn::GetAtt
RuleId:转发规则ID。
示例
JSON
格式
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"RuleActions": {
"Type": "Json",
"Description": "The actions of the forwarding rule.",
"Default": [
{
"FixedResponseConfig": {
"Content": "dssacav",
"ContentType": "text/plain",
"HttpCode": "200"
},
"ForwardGroupConfig": {
"ServerGroupTuples": [
{
"ServerGroupId": "sgp-46ndzg2wz4v5mp****"
}
]
},
"InsertHeaderConfig": {
"Key": "key",
"Value": "ClientSrcPort",
"ValueType": "SystemDefined"
},
"Order": 1,
"RedirectConfig": {
"Host": "${host}",
"HttpCode": "301",
"Path": "/test",
"Port": "10",
"Protocol": "HTTP",
"Query": "quert"
},
"RewriteConfig": {
"Host": "example.com",
"Path": "/tsdf",
"Query": "quedsa"
},
"Type": "ForwardGroup"
}
]
},
"Priority": {
"Type": "Number",
"Description": "The priority of the forwarding rule. Valid values: 1 to 10000. A lower value specifies a higher priority.\nNote The priority of each forwarding rule within a listener must be unique.",
"MinValue": 1,
"MaxValue": 10000,
"Default": 10
},
"RuleConditions": {
"Type": "Json",
"Description": "The conditions of the forwarding rule.",
"Default": [
{
"CookieConfig": {
"Values": [
{
"Key": "test",
"Value": "test"
}
]
},
"HeaderConfig": {
"Key": "port",
"Values": [
"5006"
]
},
"HostConfig": {
"Values": [
"www.example.com"
]
},
"MethodConfig": {
"Values": [
"PUT"
]
},
"PathConfig": {
"Values": [
"/test"
]
},
"QueryStringConfig": {
"Values": [
{
"Key": "test",
"Value": "test"
}
]
},
"Type": "Host"
}
]
},
"RuleName": {
"Type": "String",
"Description": "The name of the forwarding rule.\nThe name must be 2 to 128 characters in length.\nIt can contain letters, digits, periods (.), underscores (_), and hyphens (-). It\nmust start with a letter.",
"Default": "MyTestRule"
},
"ListenerId": {
"Type": "String",
"Description": "The ID of the listener that is configured for the Application Load Balancer (ALB)\ninstance.",
"Default": "lsn-5tl4x9oav95yeb****"
}
},
"Resources": {
"Rule": {
"Type": "ALIYUN::ALB::Rule",
"Properties": {
"RuleActions": {
"Ref": "RuleActions"
},
"Priority": {
"Ref": "Priority"
},
"RuleConditions": {
"Ref": "RuleConditions"
},
"RuleName": {
"Ref": "RuleName"
},
"ListenerId": {
"Ref": "ListenerId"
}
}
}
},
"Outputs": {
"RuleId": {
"Description": "The ID of the forwarding rules.",
"Value": {
"Fn::GetAtt": [
"Rule",
"RuleId"
]
}
}
}
}