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 转发规则的方向。 取值:
  • Request:请求。
  • Response:响应。
RuleName String 转发规则的名称。 长度为2~128个字符。必须以英文字母或汉字开头,可包含英文字母、汉字、数字、半角句号(.)、下划线(_)和短划线(-)。
ListenerId String 负载均衡实例监听ID。

RuleActions语法

"RuleActions": [
  {
    "Order": Integer,
    "FixedResponseConfig": Map,
    "Type": String,
    "RedirectConfig": Map,
    "ForwardGroupConfig": Map,
    "InsertHeaderConfig": Map,
    "RewriteConfig": Map,
    "TrafficMirrorConfig": Map,
    "TrafficLimitConfig": Map,
    "RemoveHeaderConfig": 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属性
TrafficMirrorConfig Map 流量镜像配置。 更多信息,请参见TrafficMirrorConfig属性
TrafficLimitConfig Map 流量限速配置。 更多信息,请参见TrafficLimitConfig属性
RemoveHeaderConfig Map 删除头字段配置。 更多信息,请参见RemoveHeaderConfig属性

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 跳转方式。 取值:
  • 301
  • 302
  • 303
  • 307
  • 308
Query String 要跳转的查询字符串。 取值:
  • ${query}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。
  • 其他取值,字符集和格式限制如下:
    • 长度为1~128个字符。
    • 不支持空格和特殊字符#[]{}\|<>&
    • 仅支持小写英文字母。
Port String 要跳转的端口。 取值:
  • ${port}(默认值):该取值不支持和其他字符串同时使用。
  • 其他取值:1~63,335。
Host String 要跳转的主机地址。 取值:
  • ${host}(默认值):该取值不支持和其他字符串拼接使用。
  • 其他取值,字符集和格式限制如下:
    • 主机名称长度为3~128个字符,支持小写英文字母、数字、短划线(-)、半角句号(.)、星号(*)和半角问号(?)。
    • 主机名称至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。
    • 最右侧的域标签只能包含英文字母和通配符,不能包含数字或短划线(-)。
    • 短划线(-)不能出现在其他域标签的开头或结尾。
    • 星号(*)和半角问号(?)可以出现在域标签的任意位置。
Protocol String 要跳转的协议。 取值:
  • ${protocol}(默认值):该取值不支持和其他字符串拼接使用。
  • HTTP
  • HTTPS
    说明 HTTPS监听仅支持跳转HTTPS协议。

ForwardGroupConfig语法

"ForwardGroupConfig": {
  "ServerGroupTuples": List,
  "ServerGroupStickySession": Map
}

ForwardGroupConfig属性

属性名称 类型 必须 允许更新 描述 约束
ServerGroupTuples List 转发到的目标服务器组列表。 更多信息, 请参见ServerGroupTuples属性
ServerGroupStickySession Map 会话保持配置 。 更多信息,请参见ServerGroupStickySession属性

ServerGroupStickySession语法

"ServerGroupStickySession": {
  "Enabled": Boolean,
  "Timeout": Integer
}

ServerGroupStickySession属性

属性名称 类型 必须 必须更新 描述 约束
Enabled Boolean 是否开启会话保持。 取值:
  • true:开启会话保持。
  • false(默认值):不开启会话保持。
Timeout Integer 超时时间。 单位:秒。取值范围:1~86400。

ServerGroupTuples语法

"ServerGroupTuples": [
  {
    "ServerGroupId": String
  }
]

ServerGroupTuples属性

属性名称 类型 必须 允许更新 描述 约束
ServerGroupId String 转发到的目的服务器组ID。

InsertHeaderConfig语法

"InsertHeaderConfig": {
  "ValueType": String,
  "Value": String,
  "Key": String
}

InsertHeaderConfig属性

属性名称 类型 必须 允许更新 描述 约束
ValueType String 头字段内容类型。 取值:
  • UserDefined:用户自定义头字段内容。
  • ReferenceHeader:引用请求头中的某一个头字段内容。
  • SystemDefined:系统定义头字段内容。
Value String 插入的头字段内容。 取值:
  • 当ValueType取值为SystemDefined时:
    • ClientSrcPort:客户端端口。
    • ClientSrcIp:客户端IP地址。
    • Protocol:客户端请求的协议(HTTP或HTTPS)。
    • SLBId:应用型负载均衡实例ID。
    • SLBPort:应用型负载均衡实例监听端口。
  • 当ValueType取值为ReferenceHeader时:

    您可以引用请求头字段中的某一个字段,长度为1~128个字符,可包含小写英文字母、数字、短划线(-)和下划线(_)。

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,
    "SourceIpConfig": Map
  }
]

RuleConditions属性

属性名称 类型 必须 允许更新 描述 约束
MethodConfig Map 请求方式配置。 更多信息,请参见MethodConfig属性
PathConfig Map 转发路径配置。 更多信息,请参见PathConfig属性
Type String 转发规则类型。 取值:
  • Host:主机。
  • Path:路径。
  • Header:HTTP头字段。
  • QueryString:查询字符串。
  • Method:请求方式。
  • Cookie:Cookie。
ResponseHeaderConfig Map HTTP报头的配置。 更多信息,请参见ResponseHeaderConfig属性
QueryStringConfig Map 查询字符串配置。 更多信息,请参见QueryStringConfig属性
HostConfig Map 主机配置。 更多信息,请参见HostConfig属性
CookieConfig Map Cookie配置。 更多信息,请参见CookieConfig属性
HeaderConfig Map 头字段配置。 更多信息,请参见HeaderConfig属性
SourceIpConfig Map 转发规则配置。 更多信息,请参见SourceIpConfig属性

SourceIpConfig语法

"SourceIpConfig": {
  "Values": List
}

SourceIpConfig属性

属性名称 类型 必须 允许更新 描述 约束
Values List 添加一个或多个IP地址或IP地址段。 一条转发规则中最多支持添加5条IP地址。

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。

TrafficMirrorConfig语法

"TrafficMirrorConfig": {
  "MirrorGroupConfig": Map,
  "TargetType": String
}

TrafficMirrorConfig属性

属性名称 类型 必须 允许更新 描述 约束
MirrorGroupConfig Map 服务器组配置。 更多信息,请参见MirrorGroupConfig属性
TargetType String 镜像的目标类型。 取值:
  • ForwardGroupMirror:表示镜像至服务器组。
  • SlsMirror:表示镜像至日志服务。

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 头字段键。

返回值

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"
            ]
          }
        }
      }
    }
  • YAML格式

    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.
          Note 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.
          The name must be 2 to 128 characters in length.
          It can contain letters, digits, periods (.), underscores (_), and hyphens (-). It
          must start with a letter.
        Default: MyTestRule
      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:
            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