更新时间:2022-03-31 GMT+08:00
分享

更新转发策略

功能介绍

更新七层转发策略。

调试

您可以在API Explorer中调试该接口。

URI

PUT /v3/{project_id}/elb/l7policies/{l7policy_id}

表1 路径参数

参数

是否必选

参数类型

描述

l7policy_id

String

转发策略ID。

project_id

String

项目ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

IAM鉴权Token。

表3 请求Body参数

参数

是否必选

参数类型

描述

l7policy

UpdateL7PolicyOption object

l7policy对象。

表4 UpdateL7PolicyOption

参数

是否必选

参数类型

描述

admin_state_up

Boolean

转发策略的管理状态,默认为true。

不支持该字段,请勿使用。

description

String

转发策略描述信息。

最小长度:0

最大长度:255

name

String

转发策略名称。

最小长度:0

最大长度:255

redirect_listener_id

String

转发到的listener的ID。

使用说明:

  • 当action为REDIRECT_TO_LISTENER时不能更新为空或null。

  • 只支持protocol为HTTPS/TERMINATED_HTTPS的listener。

  • 不能指定为其他loadbalancer下的listener。

  • 当action为REDIRECT_TO_POOL时,创建或更新时不能传入该参数。

redirect_pool_id

String

转发到pool的ID。

使用说明:

  • 指定的pool不能是listener的default_pool。不能是其他listener的l7policy使用的pool。

  • 当action为REDIRECT_TO_POOL时为必选字段,不能更新为空或null。当action为REDIRECT_TO_LISTENER时,不可指定。

redirect_url_config

UpdateRedirectUrlConfig object

转发到的url配置。

共享型负载均衡器下的转发策略不支持该字段,传入会报错。

当监听器的高级转发策略功能(enhance_l7policy_enable)开启后才会生效,未开启传入该字段会报错。

当action为REDIRECT_TO_URL时生效,且为必选字段,其他action不可指定,否则报错。

格式:protocol://host:port/path?query

protocol、host、port、path不允许同时不传或同时传${xxx}(${xxx}表示原值,如${host}表示被转发的请求URL的host部分)。protocol和port传入的值不能与l7policy关联的监听器一致且host、path同时不传或同时传${xxx}。

fixed_response_config

UpdateFixtedResponseConfig object

固定返回页面的配置。当监听器的高级转发策略功能(enhance_l7policy_enable)开启后才会生效,未开启传入该字段会报错。共享型负载均衡器下的转发策略不支持该字段,传入会报错。

当action为FIXED_RESPONSE时生效,且为必选字段,其他action不可指定,否则报错。

rules

Array of CreateRuleOption objects

转发策略关联的转发规则对象。详细参考表 l7rule字段说明。rules列表中最多含有10个rule规则(若rule中包含conditions字段,一条condition算一个规则),且列表中type为HOST_NAME,PATH,METHOD,SOURCE_IP的rule不能重复,至多指定一条。

priority

Integer

转发策略的优先级。当监听器的高级转发策略功能(enhance_l7policy_enable)开启后才会生效,未开启传入该字段会报错。共享型负载均衡器下的转发策略不支持该字段

数字越小表示优先级越高,同一监听器下不允许重复。

当action为REDIRECT_TO_LISTENER时,仅支持指定为0,优先级最高。 当关联的listener没有开启enhance_l7policy_enable,按原有policy的排序逻辑,自动排序。各域名之间优先级独立,相同域名下,按path的compare_type排序,精确>前缀>正则,匹配类型相同时,path的长度越长优先级越高。若policy下只有域名rule,没有路径rule,默认path为前缀匹配/。 当关联的listener开启了enhance_l7policy_enable,且不传该字段,则新创建的转发策略的优先级的值为:同一监听器下已有转发策略的优先级的最大值+1。因此,若当前已有转发策略的优先级的最大值是10000,新创建会因超出取值范围10000而失败。此时可通过传入指定priority,或调整原有policy的优先级来避免错误。若监听器下没有转发策略,则新建的转发策略的优先级为1。

最小值:0

最大值:10000

表5 UpdateRedirectUrlConfig

参数

是否必选

参数类型

描述

protocol

String

重定向的协议。默认值${protocol}表示继承原值(即与被转发请求保持一致)。

取值范围:

  • HTTP

  • HTTPS

  • ${protocol}

最小长度:1

最大长度:36

host

String

重定向的主机名。字符串只能包含英文字母、数字、"-"、".",必须以字母、数字开头。默认值${host}表示继承原值(即与被转发请求保持一致)。

缺省值:${host}

最小长度:1

最大长度:128

port

String

重定向到的端口。默认值${port}表示继承原值(即与被转发请求保持一致)。

缺省值:${port}

最小长度:1

最大长度:16

path

String

重定向的路径。默认值${path}表示继承原值(即与被转发请求保持一致)。

只能包含英文字母、数字、_~';@^-%#&$.*+?,=!:|/()[]{},且必须以"/"开头

缺省值:${path}

最小长度:1

最大长度:128

query

String

重定向的查询字符串。默认${query}表示继承原值(即与被转发请求保持一致)。 只能包含英文字母、数字和特殊字符:!$&'()*+,-./:;=?@^_`。字母区分大小写。 举例如下: 若该字段被设置为:${query}&name=my_name,则在转发符合条件的URL(如https://www.xxx.com:8080/elb?type=loadbalancer,此时${query}表示type=loadbalancer)时,将会重定向到https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name。

缺省值:${query}

最小长度:0

最大长度:128

status_code

String

重定向后的返回码。

取值范围:

  • 301

  • 302

  • 303

  • 307

  • 308

最小长度:1

最大长度:16

表6 UpdateFixtedResponseConfig

参数

是否必选

参数类型

描述

status_code

String

返回码。支持200~299,400~499,500~599。

最小长度:1

最大长度:16

content_type

String

返回body的格式。

取值范围:

  • text/plain

  • text/css

  • text/html

  • application/javascript

  • application/json

最小长度:1

最大长度:64

message_body

String

返回消息内容。

最小长度:0

最大长度:1024

表7 CreateRuleOption

参数

是否必选

参数类型

描述

admin_state_up

Boolean

转发规则的管理状态,默认为true。

不支持该字段,请勿使用。

compare_type

String

转发规则的匹配方式。取值:

  • type为HOST_NAME时仅支持EQUAL_TO,支持通配符*。

  • type为PATH时可以为Perl类型的REGEX,STARTS_WITH,EQUAL_TO。

  • type为METHOD、SOURCE_IP时,仅支持EQUAL_TO。

  • type为HEADER、QUERY_STRING,仅支持EQUAL_TO,支持通配符*、?。

key

String

匹配项的名称,比如转发规则匹配类型是请求头匹配,则key表示请求头参数的名称。

不支持该字段,请勿使用。

最小长度:0

最大长度:255

value

String

匹配项的值,比如转发规则匹配类型是域名匹配,则value表示域名的值。仅当conditions空时该字段生效。

当type为HOST_NAME时,字符串只能包含英文字母、数字、"-"、"."或"",必须以字母、数字或""开头。若域名中包含"",则""只能出现在开头且必须以*.开始。当*开头时表示通配0~任一个字符。

当type为PATH时,当转发规则的compare_type为STARTS_WITH、EQUAL_TO时,字符串只能包含英文字母、数字、_~';@^-%#&$.*+?,=!:|/()[]{},且必须以"/"开头。

当type为METHOD、SOURCE_IP、HEADER,QUERY_STRING时,该字段无意义,使用conditions来指定key/value。

最小长度:1

最大长度:128

project_id

String

转发规则所在的项目ID。

最小长度:32

最大长度:32

正则匹配:[0-9a-fA-F]{32}

type

String

转发规则类别。取值:

  • HOST_NAME:匹配域名 - PATH:匹配请求路径 - METHOD:匹配请求方法 - HEADER:匹配请求头 - QUERY_STRING:匹配请求查询参数 - SOURCE_IP:匹配请求源IP地址 使用说明: - 一个l7policy下创建的l7rule的HOST_NAME,PATH,METHOD,SOURCE_IP不能重复。HEADER、QUERY_STRING支持重复的rule配置。

invert

Boolean

是否反向匹配。取值:true、false,默认false。

不支持该字段,请勿使用。

conditions

Array of CreateRuleCondition objects

转发规则的匹配条件。当监听器的高级转发策略功能(enhance_l7policy_enable)开启后才会生效。 配置了conditions后,字段key、字段value的值无意义。 若指定了conditions,该rule的条件数为conditions列表长度。 列表中key必须相同,value不允许重复。

表8 CreateRuleCondition

参数

是否必选

参数类型

描述

key

String

匹配项的名称。 当type为HOST_NAME、PATH、METHOD、SOURCE_IP时,该字段固定为空字符串。 当type为HEADER时,key表示请求头参数的名称,value表示请求头参数的值。key的长度限制[1,40],只允许包含字母、数字和-_。 当type为QUERY_STRING时,key表示查询参数的名称,value表示查询参数的值。key的长度限制为[1,128],不支持空格,中括号,大括号,尖括号,反斜杠,双引号,'#','&','|','%','~',字母区分大小写。

最小长度:1

最大长度:128

value

String

匹配项的值。

当type为HOST_NAME时,key固定为空字符串,value表示域名的值。value长度[1,128],字符串只能包含英文字母、数字、"-"、"."或"",必须以字母、数字或""开头,""只能出现在开头且必须以.开始。

当type为PATH时,key固定为空字符串,value表示请求路径的值。value长度[1,128]。当转发规则的compare_type为STARTS_WITH、EQUAL_TO时,字符串只能包含英文字母、数字、_~';@^-%#&$.*+?,=!:|/()[]{},且必须以"/"开头。

[当type为HEADER时,key表示请求头参数的名称,value表示请求头参数的值。value长度限制[1,128],不支持空格,双引号,支持以下通配符:*(匹配0个或更多字符)和?(正好匹配1个字符)。

当type为QUERY_STRING时,key表示查询参数的名称,value表示查询参数的值。value长度限制为[1,128],不支持空格,中括号,大括号,尖括号,反斜杠,双引号,'#','&','|','%','~',字母区分大小写,支持通配符:*(匹配0个或更多字符)和?(正好匹配1个字符)

当type为METHOD时,key固定为空字符串,value表示请求方式。value取值范围为:GET, PUT, POST, DELETE, PATCH, HEAD, OPTIONS。

当type为SOURCE_IP时,key固定为空字符串,value表示请求源地址。value为CIDR格式,支持ipv4,ipv6。例如: 192.168.0.2/32,2049::49/64。](tag:hws,hws_hk,ocb,tlf,ctc,hcso,sbc,g42,tm,cmcc,hk-g42)

最小长度:1

最大长度:128

响应参数

状态码: 200

表9 响应Body参数

参数

参数类型

描述

request_id

String

请求ID。

注:自动生成 。

l7policy

L7Policy object

l7policy对象。

表10 L7Policy

参数

参数类型

描述

action

String

转发策略的转发动作。取值:

  • REDIRECT_TO_POOL:转发到后端云服务器组;

  • REDIRECT_TO_LISTENER:重定向到监听器;

  • REDIRECT_TO_URL:重定向到URL;

-FIXED_RESPONSE:返回固定响应体。

使用说明:

  • REDIRECT_TO_LISTENER的优先级最高,配置了以后,该监听器下的其他policy会失效。

  • 当action为REDIRECT_TO_POOL时,只支持创建在PROTOCOL为HTTP、HTTPS、TERMINATED_HTTPS的listener上。

  • 当action为REDIRECT_TO_LISTENER时,只支持创建在PROTOCOL为HTTP的listener上。

admin_state_up

Boolean

转发策略的管理状态,默认为true。

不支持该字段,请勿使用。

description

String

转发策略描述信息。

id

String

转发策略ID。

listener_id

String

转发策略所属的监听器ID。

name

String

转发策略名称

最小长度:1

最大长度:255

position

Integer

转发策略的优先级,不支持更新。

不支持该字段,请勿使用。

最小值:1

最大值:100

priority

Integer

转发策略的优先级。当监听器的高级转发策略功能(enhance_l7policy_enable)开启后才会生效,未开启传入该字段会报错。

数字越小表示优先级越高,同一监听器下不允许重复。

当action为REDIRECT_TO_LISTENER时,仅支持指定为0,优先级最高。 当关联的listener没有开启enhance_l7policy_enable,按原有policy的排序逻辑,自动排序。各域名之间优先级独立,相同域名下,按path的compare_type排序,精确>前缀>正则,匹配类型相同时,path的长度越长优先级越高。若policy下只有域名rule,没有路径rule,默认path为前缀匹配/。 当关联的listener开启了enhance_l7policy_enable,且不传该字段,则新创建的转发策略的优先级的值为:同一监听器下已有转发策略的优先级的最大值+1。因此,若当前已有转发策略的优先级的最大值是10000,新创建会因超出取值范围10000而失败。此时可通过传入指定priority,或调整原有policy的优先级来避免错误。若监听器下没有转发策略,则新建的转发策略的优先级为1。

project_id

String

转发策略所在的项目ID。

provisioning_status

String

转发策略的配置状态。 取值范围:

  • ACTIVE:默认值,表示正常。

  • ERROR:表示当前策略与同一监听器下的其他策略存在相同的规则配置。

redirect_pool_id

String

转发到pool的ID。当action为REDIRECT_TO_POOL时生效。

使用说明:

  • 指定的pool不能是listener的default_pool。不能是其他listener的l7policy使用的pool。

  • 当action为REDIRECT_TO_POOL时为必选字段。当action为REDIRECT_TO_LISTENER时,不可指定。

redirect_listener_id

String

转发到的listener的ID,当action为REDIRECT_TO_LISTENER时必选。

使用说明:

  • 只支持protocol为HTTPS/TERMINATED_HTTPS的listener。

  • 不能指定为其他loadbalancer下的listener。

  • 当action为REDIRECT_TO_POOL时,创建或更新时不能传入该参数。

redirect_url

String

转发到的url。必须满足格式: protocol://host:port/path?query。

不支持该字段,请勿使用。

正则匹配:(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

rules

Array of RuleRef objects

转发策略关联的转发规则列表

redirect_url_config

RedirectUrlConfig object

转发到的url配置。

共享型负载均衡器下的转发策略不支持该字段,传入会报错。

当监听器的高级转发策略功能(enhance_l7policy_enable)开启后才会生效,未开启传入该字段会报错。

当action为REDIRECT_TO_URL时生效,且为必选字段,其他action不可指定,否则报错。

格式:protocol://host:port/path?query

protocol、host、port、path不允许同时不传或同时传${xxx}(${xxx}表示原值,如${host}表示被转发的请求URL的host部分)。protocol和port传入的值不能与l7policy关联的监听器一致且host、path同时不传或同时传${xxx}。

fixed_response_config

FixtedResponseConfig object

固定返回页面的配置。当监听器的高级转发策略功能(enhance_l7policy_enable)开启后才会生效,未开启传入该字段会报错。

当action为FIXED_RESPONSE时生效,且为必选字段,其他action不可指定。

表11 RuleRef

参数

参数类型

描述

id

String

规则ID。

表12 RedirectUrlConfig

参数

参数类型

描述

protocol

String

重定向的协议。默认值${protocol}表示继承原值(即与被转发请求保持一致)。

取值范围:

  • HTTP

  • HTTPS

  • ${protocol}

最小长度:1

最大长度:36

host

String

重定向的主机名。字符串只能包含英文字母、数字、"-"、"."。且必须以字母、数字开头。默认值${host}表示继承原值(即与被转发请求保持一致)。

缺省值:${host}

最小长度:1

最大长度:128

port

String

重定向到的端口。默认值${port}表示继承原值(即与被转发请求保持一致)。

缺省值:${port}

最小长度:1

最大长度:16

path

String

重定向的路径。默认值${path}表示继承原值(即与被转发请求保持一致)。

支持英文字母、数字、_~';@^-%#&$.*+?,=!:|/()[]{},且必须以"/"开头。

缺省值:${path}

最小长度:1

最大长度:128

query

String

重定向的查询字符串。默认${query}表示继承原值(即与被转发请求保持一致)。举例如下: 若该字段被设置为:${query}&name=my_name,则在转发符合条件的URL(如https://www.xxx.com:8080/elb?type=loadbalancer,此时${query}表示type=loadbalancer)时,将会重定向到https://www.xxx.com:8080/elb?type=loadbalancer&name=my_name。 只能包含英文字母、数字和特殊字符:!$&'()*+,-./:;=?@^_`。字母区分大小写。

缺省值:${query}

最小长度:0

最大长度:128

status_code

String

重定向后的返回码。

取值范围:

  • 301

  • 302

  • 303

  • 307

  • 308

最小长度:1

最大长度:16

表13 FixtedResponseConfig

参数

参数类型

描述

status_code

String

返回码。支持200~299,400~499,500~599。

最小长度:1

最大长度:16

content_type

String

返回body的格式。

取值范围:

  • text/plain

  • text/css

  • text/html

  • application/javascript

  • application/json

最小长度:0

最大长度:32

message_body

String

返回消息内容。

最小长度:0

最大长度:1024

请求示例

PUT https://{ELB_Endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/l7policies/cf4360fd-8631-41ff-a6f5-b72c35da74be

{
  "l7policy" : {
    "name" : "My policy.",
    "description" : "Update policy.",
    "redirect_listener_id" : "48a97732-449e-4aab-b561-828d29e45050"
  }
}

响应示例

状态码: 200

操作正常返回。

{
  "request_id" : "e5c07525-1470-47b6-9b0c-567527a036aa",
  "l7policy" : {
    "redirect_pool_id" : "768e9e8c-e7cb-4fef-b24b-af9399dbb240",
    "description" : "",
    "admin_state_up" : true,
    "rules" : [ {
      "id" : "c5c2d625-676b-431e-a4c7-c59cc2664881"
    } ],
    "project_id" : "7a9941d34fc1497d8d0797429ecfd354",
    "listener_id" : "cdb03a19-16b7-4e6b-bfec-047aeec74f56",
    "redirect_url" : null,
    "redirect_url_config" : null,
    "fixed_response_config" : null,
    "redirect_listener_id" : null,
    "action" : "REDIRECT_TO_POOL",
    "position" : 100,
    "priority" : null,
    "provisioning_status" : "ACTIVE",
    "id" : "01832d99-bbd8-4340-9d0c-6ff8f7a37307",
    "name" : "l7policy-67"
  }
}

状态码

状态码

描述

200

操作正常返回。

错误码

请参见错误码

分享:

    相关文档

    相关产品

close