ALIYUN::ALB::Rule

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:写入头字段。

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

返回固定内容的格式。

取值:

  • 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

MaxAge

Integer

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

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

AllowCredentials

String

是否允许携带凭证信息。

取值:

  • on:是。

  • off:否。

ExposeHeaders

List

允许暴露的 Header 列表。

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

返回值

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