ALIYUN::ALB::Rule類型用於建立轉寄規則。
文法
{
"Type": "ALIYUN::ALB::Rule",
"Properties": {
"RuleActions": List,
"Priority": Integer,
"RuleConditions": List,
"Direction": String,
"RuleName": String,
"ListenerId": String
}
}
屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
ListenerId | String | 是 | 否 | Server Load Balancer執行個體監聽ID。 | 無 |
Priority | Integer | 是 | 是 | 轉寄規則的優先順序。 | 取值範圍:1~10,000。取值越小,優先順序越高。 說明 同一個監聽內轉寄規則的優先順序必須唯一。 |
RuleActions | List | 是 | 是 | 轉寄規則的動作列表。 | 更多資訊,請參見RuleActions屬性。 |
RuleConditions | List | 是 | 是 | 轉寄規則的條件列表。 | 更多資訊,請參見RuleConditions屬性。 |
RuleName | String | 是 | 是 | 轉寄規則的名稱。 | 長度為2~128個字元。必須以英文字母或漢字開頭,可包含英文字母、漢字、數字、半形句號(.)、底線(_)和短劃線(-)。 |
Direction | String | 否 | 否 | 轉寄規則的方向。 | 取值:
|
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 | 是 | 是 | 動作類型。 | 取值:
|
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 | 否 | 是 | 返回固定內容的格式。 | 取值:
|
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 | 否 | 是 | 要跳轉的主機地址。 | 取值:
|
HttpCode | Integer | 否 | 是 | 跳轉方式。 | 取值:
|
Path | String | 否 | 是 | 要跳轉的路徑。 | 取值:
|
Port | String | 否 | 是 | 要跳轉的連接埠。 | 取值:
|
Protocol | String | 否 | 是 | 要跳轉的協議。 | 取值:
|
Query | String | 否 | 是 | 要跳轉的查詢字串。 | 取值:
|
ForwardGroupConfig文法
"ForwardGroupConfig": {
"ServerGroupTuples": List,
"ServerGroupStickySession": Map
}
ForwardGroupConfig屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
ServerGroupStickySession | Map | 否 | 是 | 會話保持配置 。 | 更多資訊,請參見ServerGroupStickySession屬性。 |
ServerGroupTuples | List | 否 | 是 | 轉寄到的目標伺服器組列表。 | 更多資訊, 請參見ServerGroupTuples屬性。 |
ServerGroupStickySession文法
"ServerGroupStickySession": {
"Enabled": Boolean,
"Timeout": Integer
}
ServerGroupStickySession屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Enabled | Boolean | 否 | 是 | 是否開啟會話保持。 | 取值:
|
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 | String | 否 | 是 | 頭欄位內容類型。 | 取值:
|
RewriteConfig文法
"RewriteConfig": {
"Path": String,
"Query": String,
"Host": String
}
RewriteConfig屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Host | String | 否 | 是 | 內部跳轉的目的主機地址。 | 取值:
|
Path | String | 否 | 是 | 要跳轉的路徑。 | 取值:
|
Query | String | 否 | 是 | 內部跳轉的查詢字串。 | 取值:
|
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 | 是 | 是 | 轉寄規則類型。 | 取值:
|
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 | 否 | 是 | 頭欄位鍵。 |
|
Values | List | 否 | 是 | 頭欄位值。 |
|
SourceIpConfig文法
"SourceIpConfig": {
"Values": List
}
SourceIpConfig屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Values | List | 否 | 是 | 添加一個或多個IP地址或IP位址區段。 | 一條轉寄規則中最多支援添加5條IP地址。 |
MethodConfig文法
"MethodConfig": {
"Values": List
}
MethodConfig屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Values | List | 否 | 是 | 請求方式。 | 取值:
|
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碼值 |
TrafficMirrorConfig文法
"TrafficMirrorConfig": {
"MirrorGroupConfig": Map,
"TargetType": String
}
TrafficMirrorConfig屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
MirrorGroupConfig | Map | 是 | 是 | 伺服器組配置。 | 更多資訊,請參見MirrorGroupConfig屬性。 |
TargetType | String | 是 | 是 | 鏡像的目標類型。 | 取值:
|
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 方法。取值:
|
AllowHeaders | List | 否 | 是 | 允許跨域的 Header 列表。 | 允許跨域的 Header 列表。支援配置為 |
AllowOrigin | List | 否 | 是 | 允許的訪問來源列表。 | 支援只配置一個元素
|
MaxAge | Integer | 否 | 是 | 預檢請求在瀏覽器的最大緩衝時間。 | 單位:秒,取值範圍:-1~172800。 |
AllowCredentials | String | 否 | 是 | 是否允許攜帶憑證資訊。 | 取值:
|
ExposeHeaders | List | 否 | 是 | 允許暴露的 Header 列表。 | 允許暴露的 Header 列表。支援配置為 |
傳回值
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"
]
}
}
}
}