全部產品
Search
文件中心

:ALIYUN::ALB::Rule

更新時間:Nov 19, 2024

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

轉寄規則的方向。

取值:

  • 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:應用型Server Load Balancer執行個體ID。

    • SLBPort:應用型Server Load Balancer執行個體監聽連接埠。

  • 當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:表示鏡像至Log Service。

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