ALIYUN::ALB::Rule类型用于创建转发规则。
语法
{
"Type": "ALIYUN::ALB::Rule",
"Properties": {
"RuleActions": List,
"Priority": Integer,
"RuleConditions": List,
"Direction": String,
"RuleName": String,
"ListenerId": String
}
}
属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ListenerId | String | 是 | 否 | 负载均衡实例监听ID。 | 无 |
Priority | Integer | 是 | 是 | 转发规则的优先级。 | 取值范围:1~10,000。取值越小,优先级越高。 说明 同一个监听内转发规则的优先级必须唯一。 |
RuleActions | List | 是 | 是 | 转发规则的动作列表。 | 更多信息,请参见RuleActions属性。 |
RuleConditions | List | 是 | 是 | 转发规则的条件列表。 | 更多信息,请参见RuleConditions属性。 |
RuleName | String | 是 | 是 | 转发规则的名称。 | 长度为2~128个字符。必须以英文字母或汉字开头,可包含英文字母、汉字、数字、半角句号(.)、下划线(_)和短划线(-)。 |
Direction | String | 否 | 否 | 转发规则的方向。 | 取值:
|
RuleActions语法
"RuleActions": [
{
"Order": Integer,
"FixedResponseConfig": Map,
"Type": String,
"RedirectConfig": Map,
"ForwardGroupConfig": Map,
"InsertHeaderConfig": Map,
"RewriteConfig": Map,
"TrafficMirrorConfig": Map,
"TrafficLimitConfig": Map,
"RemoveHeaderConfig": Map,
"CorsConfig": Map
}
]
RuleActions属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Order | Integer | 是 | 是 | 转发规则动作执行的顺序。 | 取值范围:1~50,000,按取值从小到大执行动作。 说明 取值不能重复。 |
Type | String | 是 | 是 | 动作类型。 | 取值:
|
FixedResponseConfig | Map | 否 | 是 | 固定响应内容配置。 | 更多信息,请参见FixedResponseConfig属性。 |
ForwardGroupConfig | Map | 否 | 是 | 转发组配置。 | 更多信息,请参见ForwardGroupConfig属性。 |
InsertHeaderConfig | Map | 否 | 是 | 写入头字段配置。 | 更多信息,请参见InsertHeaderConfig属性。 |
RedirectConfig | Map | 否 | 是 | 重定向配置。 | 更多信息,请参见RedirectConfig属性。 |
RemoveHeaderConfig | Map | 否 | 是 | 删除头字段配置。 | 更多信息,请参见RemoveHeaderConfig属性。 |
RewriteConfig | Map | 否 | 是 | 重写配置。 | 更多信息,请参见RewriteConfig属性。 |
TrafficLimitConfig | Map | 否 | 是 | 流量限速配置。 | 更多信息,请参见TrafficLimitConfig属性。 |
TrafficMirrorConfig | Map | 否 | 是 | 流量镜像配置。 | 更多信息,请参见TrafficMirrorConfig属性。 |
CorsConfig | Map | 否 | 是 | 跨域配置。 | 更多信息,请参见CorsConfig属性。 |
FixedResponseConfig语法
"FixedResponseConfig": {
"HttpCode": String,
"ContentType": String,
"Content": String
}
FixedResponseConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Content | String | 否 | 是 | 返回的固定内容。 | 最大支持存储1 KB,只支持ASCII字符。 |
ContentType | String | 否 | 是 | 返回固定内容的格式。 | 取值:
|
HttpCode | String | 否 | 是 | 返回的HTTP响应码。 | 仅支持HTTP_2xx、HTTP_4xx、HTTP_5xx数字型字符串,x为任意数字。 |
RedirectConfig语法
"RedirectConfig": {
"Path": String,
"HttpCode": Integer,
"Query": String,
"Port": String,
"Host": String,
"Protocol": String
}
RedirectConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Host | String | 否 | 是 | 要跳转的主机地址。 | 取值:
|
HttpCode | Integer | 否 | 是 | 跳转方式。 | 取值:
|
Path | String | 否 | 是 | 要跳转的路径。 | 取值:
|
Port | String | 否 | 是 | 要跳转的端口。 | 取值:
|
Protocol | String | 否 | 是 | 要跳转的协议。 | 取值:
|
Query | String | 否 | 是 | 要跳转的查询字符串。 | 取值:
|
ForwardGroupConfig语法
"ForwardGroupConfig": {
"ServerGroupTuples": List,
"ServerGroupStickySession": Map
}
ForwardGroupConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ServerGroupStickySession | Map | 否 | 是 | 会话保持配置 。 | 更多信息,请参见ServerGroupStickySession属性。 |
ServerGroupTuples | List | 否 | 是 | 转发到的目标服务器组列表。 | 更多信息, 请参见ServerGroupTuples属性。 |
ServerGroupStickySession语法
"ServerGroupStickySession": {
"Enabled": Boolean,
"Timeout": Integer
}
ServerGroupStickySession属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Enabled | Boolean | 否 | 是 | 是否开启会话保持。 | 取值:
|
Timeout | Integer | 否 | 是 | 超时时间。 | 单位:秒。取值范围:1~86400。 |
ServerGroupTuples语法
"ServerGroupTuples": [
{
"ServerGroupId": String,
"Weight": Integer
}
]
ServerGroupTuples属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ServerGroupId | String | 是 | 是 | 转发到的目的服务器组ID。 | 无 |
Weight | Integer | 否 | 是 | 权重。 | 取值越大,权重越大,表示转发的访问请求更多。取值范围:0~100。
|
InsertHeaderConfig语法
"InsertHeaderConfig": {
"ValueType": String,
"Value": String,
"Key": String
}
InsertHeaderConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
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。 |
Value | String | 否 | 是 | 插入的头字段内容。 | 取值:
|
ValueType | String | 否 | 是 | 头字段内容类型。 | 取值:
|
RewriteConfig语法
"RewriteConfig": {
"Path": String,
"Query": String,
"Host": String
}
RewriteConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Host | String | 否 | 是 | 内部跳转的目的主机地址。 | 取值:
|
Path | String | 否 | 是 | 要跳转的路径。 | 取值:
|
Query | String | 否 | 是 | 内部跳转的查询字符串。 | 取值:
|
RuleConditions语法
"RuleConditions": [
{
"MethodConfig": Map,
"PathConfig": Map,
"Type": String,
"QueryStringConfig": Map,
"HostConfig": Map,
"CookieConfig": Map,
"HeaderConfig": Map,
"SourceIpConfig": Map,
"ResponseStatusCodeConfig": Map,
"ResponseHeaderConfig": Map
}
]
RuleConditions属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Type | String | 是 | 是 | 转发规则类型。 | 取值:
|
CookieConfig | Map | 否 | 是 | Cookie配置。 | 更多信息,请参见CookieConfig属性。 |
HeaderConfig | Map | 否 | 是 | 头字段配置。 | 更多信息,请参见HeaderConfig属性。 |
HostConfig | Map | 否 | 是 | 主机配置。 | 更多信息,请参见HostConfig属性。 |
MethodConfig | Map | 否 | 是 | 请求方式配置。 | 更多信息,请参见MethodConfig属性。 |
PathConfig | Map | 否 | 是 | 转发路径配置。 | 更多信息,请参见PathConfig属性。 |
QueryStringConfig | Map | 否 | 是 | 查询字符串配置。 | 更多信息,请参见QueryStringConfig属性。 |
SourceIpConfig | Map | 否 | 是 | 转发规则配置。 | 更多信息,请参见SourceIpConfig属性。 |
ResponseStatusCodeConfig | Map | 否 | 是 | 响应状态码配置。 | 更多信息,请参见ResponseStatusCodeConfig属性。 |
ResponseHeaderConfig | Map | 否 | 是 | 标头条件配置。 | 更多信息,请参见ResponseHeaderConfig属性。 |
ResponseStatusCodeConfig语法
"ResponseStatusCodeConfig": {
"Values": List
}
ResponseStatusCodeConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Values | List | 否 | 是 | 响应状态码列表。 | 无。 |
ResponseHeaderConfig语法
"ResponseHeaderConfig": {
"Key": String,
"Values": List
}
ResponseHeaderConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Key | String | 否 | 是 | 头字段键。 |
|
Values | List | 否 | 是 | 头字段值。 |
|
SourceIpConfig语法
"SourceIpConfig": {
"Values": List
}
SourceIpConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Values | List | 否 | 是 | 添加一个或多个IP地址或IP地址段。 | 一条转发规则中最多支持添加5条IP地址。 |
MethodConfig语法
"MethodConfig": {
"Values": List
}
MethodConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Values | List | 否 | 是 | 请求方式。 | 取值:
|
PathConfig语法
"PathConfig": {
"Values": List
}
PathConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Values | List | 否 | 是 | 转发路径。 | 长度为1~128个字符。必须以正斜线(/)开头,可包含英文字母、数字、星号(*)、半角问号(?)和特殊字符 |
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属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Key | String | 否 | 是 | 头字段键。 | 长度为1~40个字符。可包含小写英文字母、数字、短划线(-)和下划线(_)。不支持Cookie和Host。 |
Values | List | 否 | 是 | 头字段值。 | 同一个转发规则条件内头字段值不能重复。长度为1~128个字符,支持ASCII码值 |
TrafficMirrorConfig语法
"TrafficMirrorConfig": {
"MirrorGroupConfig": Map,
"TargetType": String
}
TrafficMirrorConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
MirrorGroupConfig | Map | 是 | 是 | 服务器组配置。 | 更多信息,请参见MirrorGroupConfig属性。 |
TargetType | String | 是 | 是 | 镜像的目标类型。 | 取值:
|
MirrorGroupConfig语法
"MirrorGroupConfig": {
"ServerGroupTuples": List
}
MirrorGroupConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ServerGroupTuples | List | 是 | 是 | 服务器组列表。 | 无 |
TrafficLimitConfig语法
"TrafficLimitConfig": {
"PerIpQps": Integer,
"QPS": Integer
}
TrafficLimitConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
PerIpQps | Integer | 否 | 是 | 每秒请求次数。 | 取值范围:1 ~ 100000。 |
QPS | Integer | 是 | 是 | 单IP每秒请求次数。 | 取值范围:1 ~ 100000。 说明 如果您需要同时配置QPS参数,PerIpQps参数的取值必须小于QPS参数的取值。 |
RemoveHeaderConfig语法
"RemoveHeaderConfig": {
"Key": String
}
RemoveHeaderConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Key | String | 否 | 是 | 头字段键。 | 无 |
CorsConfig语法
"CorsConfig": {
"AllowMethods": List,
"AllowHeaders": List,
"AllowOrigin": List,
"MaxAge": Integer,
"AllowCredentials": String,
"ExposeHeaders": List
}
CorsConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
AllowMethods | List | 否 | 是 | 选择跨域访问时允许的 HTTP 方法。 | 选择跨域访问时允许的 HTTP 方法。取值:
|
AllowHeaders | List | 否 | 是 | 允许跨域的 Header 列表。 | 允许跨域的 Header 列表。支持配置为 |
AllowOrigin | List | 否 | 是 | 允许的访问来源列表。 | 支持只配置一个元素
|
MaxAge | Integer | 否 | 是 | 预检请求在浏览器的最大缓存时间。 | 单位:秒,取值范围:-1~172800。 |
AllowCredentials | String | 否 | 是 | 是否允许携带凭证信息。 | 取值:
|
ExposeHeaders | List | 否 | 是 | 允许暴露的 Header 列表。 | 允许暴露的 Header 列表。支持配置为 |
返回值
Fn::GetAtt
RuleId:转发规则ID。
示例
YAML
格式
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
ListenerId:
Type: String
Description: |-
The ID of the listener that is configured for the Application Load Balancer (ALB)
instance.
Default: lsn-5tl4x9oav95yeb****
Resources:
Rule:
Type: ALIYUN::ALB::Rule
Properties:
RuleActions:
- 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: 10
RuleConditions:
- 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: MyTestRule
ListenerId:
Ref: ListenerId
Outputs:
RuleId:
Description: The ID of the forwarding rules.
Value:
Fn::GetAtt:
- Rule
- RuleId
JSON
格式
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"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": [
{
"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": 10,
"RuleConditions": [
{
"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": "MyTestRule",
"ListenerId": {
"Ref": "ListenerId"
}
}
}
},
"Outputs": {
"RuleId": {
"Description": "The ID of the forwarding rules.",
"Value": {
"Fn::GetAtt": [
"Rule",
"RuleId"
]
}
}
}
}