文档

ALIYUN::ALB::Rule

更新时间:

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,
    "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。

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个字符。必须以正斜线(/)开头,可包含英文字母、数字、星号(*)、半角问号(?)和特殊字符$-_.+/&~@:,不支持“%#;!()[]^,”。英文字母区分大小写。

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。

示例

  • 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"
            ]
          }
        }
      }
    }
  • 本页导读 (1)
文档反馈