ALIYUN::ALB::Rule

更新时间:
复制 MD 格式

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

否

否

转发规则的方向。

取值:

  • Request:请求。

  • Response:响应。

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

是

是

动作类型。

取值:

  • ForwardGroup:转发至多个虚拟服务器组。

  • Redirect:重定向。

  • FixedResponse:返回固定内容。

  • Rewrite:重写。

  • InsertHeader:写入头字段。

CorsConfig

Map

否

是

跨域配置。

更多信息,请参见CorsConfig属性。

FixedResponseConfig

Map

否

是

固定响应内容配置。

更多信息,请参见FixedResponseConfig属性。

ForwardGroupConfig

Map

否

是

转发组配置。

更多信息,请参见ForwardGroupConfig属性。

InsertHeaderConfig

Map

否

是

写入头字段配置。

更多信息,请参见InsertHeaderConfig属性。

RedirectConfig

Map

否

是

重定向配置。

更多信息,请参见RedirectConfig属性。

RemoveHeaderConfig

Map

否

是

删除头字段配置。

更多信息,请参见RemoveHeaderConfig属性。

RewriteConfig

Map

否

是

重写配置。

更多信息,请参见RewriteConfig属性。

TrafficLimitConfig

Map

否

是

流量限速配置。

更多信息,请参见TrafficLimitConfig属性。

TrafficMirrorConfig

Map

否

是

流量镜像配置。

更多信息,请参见TrafficMirrorConfig属性。

FixedResponseConfig语法

"FixedResponseConfig": {
  "HttpCode": String,
  "ContentType": String,
  "Content": String
}

FixedResponseConfig属性

属性名称

类型

必须

允许更新

描述

约束

Content

String

否

是

返回的固定内容。

最大支持存储1 KB,只支持ASCII字符。

ContentType

String

否

是

返回固定内容的格式。

取值:

  • text/plain

  • text/css

  • text/html

  • application/javascript

  • application/json

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

否

是

要跳转的主机地址。

取值:

  • ${host}(默认值):该取值不支持和其他字符串拼接使用。

  • 其他取值,字符集和格式限制如下:

    • 主机名称长度为3~128个字符,支持小写英文字母、数字、短划线(-)、半角句号(.)、星号(*)和半角问号(?)。

    • 主机名称至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。

    • 最右侧的域标签只能包含英文字母和通配符,不能包含数字或短划线(-)。

    • 短划线(-)不能出现在其他域标签的开头或结尾。

    • 星号(*)和半角问号(?)可以出现在域标签的任意位置。

HttpCode

Integer

否

是

跳转方式。

取值:

  • 301

  • 302

  • 303

  • 307

  • 308

Path

String

否

是

要跳转的路径。

取值:

  • ${path}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和参数支持的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:

    • 长度为1~128个字符。

    • 必须以正斜线(/)开头,支持字母、数字和特殊字符$-_.+/&~@:,,同时支持星号(*)和半角问号(?)。不支持%#;!()[]^,"。

    • 支持区分大小写英文字母。

Port

String

否

是

要跳转的端口。

取值:

  • ${port}(默认值):该取值不支持和其他字符串同时使用。

  • 其他取值:1~63,335。

Protocol

String

否

是

要跳转的协议。

取值:

  • ${protocol}(默认值):该取值不支持和其他字符串拼接使用。

  • HTTP

  • HTTPS

    说明

    HTTPS监听仅支持跳转HTTPS协议。

Query

String

否

是

要跳转的查询字符串。

取值:

  • ${query}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:

    • 长度为1~128个字符。

    • 不支持空格和特殊字符#[]{}\|<>&。

    • 仅支持小写英文字母。

ForwardGroupConfig语法

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

ForwardGroupConfig属性

属性名称

类型

必须

允许更新

描述

约束

ServerGroupStickySession

Map

否

是

会话保持配置 。

更多信息,请参见ServerGroupStickySession属性。

ServerGroupTuples

List

否

是

转发到的目标服务器组列表。

更多信息, 请参见ServerGroupTuples属性。

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属性

属性名称

类型

必须

允许更新

描述

约束

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取值为SystemDefined时:

    • ClientSrcPort:客户端端口。

    • ClientSrcIp:客户端IP地址。

    • Protocol:客户端请求的协议(HTTP或HTTPS)。

    • SLBId:应用型负载均衡实例ID。

    • SLBPort:应用型负载均衡实例监听端口。

  • 当ValueType取值为ReferenceHeader时:

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

ValueType

String

否

是

头字段内容类型。

取值:

  • UserDefined:用户自定义头字段内容。

  • ReferenceHeader:引用请求头中的某一个头字段内容。

  • SystemDefined:系统定义头字段内容。

RewriteConfig语法

"RewriteConfig": {
  "Path": String,
  "Query": String,
  "Host": String
}

RewriteConfig属性

属性名称

类型

必须

允许更新

描述

约束

Host

String

否

是

内部跳转的目的主机地址。

取值:

  • ${host}(默认值):取此值时不支持和其他字符串拼接使用。

  • 其他取值,字符集和格式限制如下:

    • 主机名称长度为3~128个字符,支持小写英文字母、数字、短划线(-)、半角句号(.)、星号(*)和半角问号(?)。

    • 主机名称至少包含一个半角句号(.),且半角句号(.)不能出现在开头或结尾。

    • 最右侧的域标签只能包含字母和通配符,不能包含数字或短划线(-)。

    • 短划线(-)不能出现在其他域标签的开头或结尾。

    • 星号(*)和半角问号(?)可以出现在域标签的任意位置。

Path

String

否

是

要跳转的路径。

取值:

  • ${path}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:

    • 长度为1~128个字符。

    • 必须以正斜线(/)开头,支持英文字母、数字和特殊字符$-_.+/&~@:,同时支持星号(*)和半角问号(?)。不支持%#;!()[]^",。

    • 支持区分大小写英文字母。

Query

String

否

是

内部跳转的查询字符串。

取值:

  • ${query}(默认值):可以引用${host}、${protocol}和${port},每个变量最多出现一次。上述变量可以同时使用,也可以和下面罗列的可取值范围内的字符串拼接使用。

  • 其他取值,字符集和格式限制如下:

    • 长度为1~128个字符。

    • 不支持空格和特殊字符#[]{}\|<>&。

    • 仅支持小写英文字母。

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

是

是

转发规则类型。

取值:

  • Host:主机。

  • Path:路径。

  • Header:HTTP头字段。

  • QueryString:查询字符串。

  • Method:请求方式。

  • Cookie:Cookie。

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

否

是

头字段键。

  • 长度为 1~40 个字符。

  • 支持字母 a~z、数字、短划线(-)和下划线(_)。

  • 不支持 Cookie 和 Host。

Values

List

否

是

头字段值。

  • 长度为 1~128 个字符。

  • 支持 ASCII 码值ch >= 32 && ch < 127范围内可打印字符、小写字母以及通配符星号(*)和半角问号(?)。

  • 开头和结尾不能为空格。

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属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

否

是

头字段键。

长度为1~40个字符。可包含小写英文字母、数字、短划线(-)和下划线(_)。不支持Cookie和Host。

Values

List

否

是

头字段值。

同一个转发规则条件内头字段值不能重复。长度为1~128个字符,支持ASCII码值ch >= 32 && ch < 127范围内可打印字符、星号(*)和半角问号(?)。开头和结尾不能为空格。

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

否

是

头字段键。

无

CorsConfig语法

"CorsConfig": {
  "AllowMethods": List,
  "AllowHeaders": List,
  "AllowOrigin": List,
  "MaxAge": Integer,
  "AllowCredentials": String,
  "ExposeHeaders": List
}

CorsConfig属性

属性名称

类型

必须

允许更新

描述

约束

AllowMethods

List

否

是

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

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

  • GET。

  • POST。

  • PUT。

  • DELETE。

  • HEAD。

  • OPTIONS。

  • PATCH。

AllowHeaders

List

否

是

允许跨域的 Header 列表。

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

AllowOrigin

List

否

是

允许的访问来源列表。

支持只配置一个元素*,或配置一个或多个值。

  • 单个值必须以http://或者https://开头,后边加一个正确的域名或一级泛域名。(例:http://*.test.abc.example.com)

  • 单个值可以不加端口,也可以指定端口,端口范围:1~65535。

AllowCredentials

String

否

是

是否允许携带凭证信息。

取值:

  • on:是。

  • off:否。

ExposeHeaders

List

否

是

允许暴露的 Header 列表。

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

MaxAge

Integer

否

是

预检请求在浏览器的最大缓存时间。

单位:秒,取值范围:-1~172800。

返回值

Fn::GetAtt

  • RuleId:转发规则ID。

  • ListenerId:监听 ID。

示例

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                
{
  "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"
        ]
      }
    }
  }
}