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

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

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
}

ForwardGroupConfig属性

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

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

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

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。

返回值

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