设置镜像回源规则
功能介绍
本接口用于为指定桶配置镜像回源策略。接口是幂等的,如果桶上已存在相同策略内容,则返回成功,status code返回值为200;否则status code返回值为201。
请求消息样式
PUT /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.cn-north-4.myhuaweicloud.com Authorization: authorization Content-Type: application/json Content-Length: length Date: date policy json body
请求消息参数
该请求消息中不使用消息参数。
请求消息头
该请求使用公共消息头,具体参见表3。
请求消息元素
名称 |
描述 |
是否必选 |
---|---|---|
rules |
策略规则数组。 类型:Container 取值范围:数组大小[1, 10]
说明:
同一个桶下的不同策略前缀不能重复和起始包含,委托建议使用同一个。 |
是 |
名称 |
描述 |
是否必选 |
---|---|---|
id |
规则ID。当前桶上配置的镜像回源规则的唯一标识。 类型:String 取值范围:[1, 256],满足“^[a-zA-Z0-9_-]{1, 256}$” |
是 |
condition |
触发回源功能的条件。 类型:Container |
是 |
httpErrorCodeReturnedEquals |
触发回源功能的错误码。当下载请求返回此错误码时,会触发回源功能。 类型:Integer 取值范围:404 |
是 |
objectKeyPrefixEquals |
触发回源功能的对象名前缀。当触发回源的请求里对象名满足此前缀,才会继续执行回源功能。当前缀配置为空时,默认所有对象都匹配。同一个桶上多条规则的前缀之间不允许重复和起始包含。 类型:String 有效值:长度[0, 1023],值允许为任意字符 |
否 |
redirect |
回源功能主要参数。 类型:Container |
是 |
agency |
委托名。客户通过委托赋予OBS服务查询用户桶内指定对象是否存在以及向用户桶内上传对象的权限。 类型:String |
是 |
publicSource |
公共可访问源端配置。当源端为公共可访问的资源时,必选。 类型:Container |
否 |
sourceEndpoint |
公共可访问的源端地址。 类型:Container |
否 |
master |
主源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶域名地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。 类型:Array 有效取值:单个源站地址格式为https|http://xxx.yyy.zzz,长度为[10, 255]
说明:
回源时会优先使用主源站地址,如果同时配置多个主地址,会轮询访问所有主地址。如果配置2个及以上主地址,第一次请求主地址失败,并且满足重试条件时,会选用另一个主地址重试一次。 至少配置一个主地址。 最多同时配置5个主地址。 |
否 |
slave |
备源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶域名地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。 类型:Array 有效取值:单个源站地址格式为https|http://xxx.yyy.zzz,长度为[10, 255]
说明:
主地址回源失败时,会选用一个备地址进行重试。 最多同时配置5个备地址。 |
否 |
retryConditions |
回源地址切换的条件。 类型:Array 取值范围:4XX,5XX以及400~499,500~599等具体错误码
说明:
4XX和4开头的具体错误码不能同时配置,5XX和5开头的错误码不能同时配置。 最大支持同时配置20个错误码 |
否 |
passQueryString |
是否携带请求字符串。如果是true,会将OBS请求中的queryString传递到源站。否则,则不会将queryString传递到源站。 该值默认值是false,如果设置为false则会忽略。 类型:Boolean 取值范围:false或true
说明:
如果是true,但query里有签名信息,则将签名信息去掉,剩余参数再传递。 |
是 |
mirrorFollowRedirect |
是否跟随源站3xx重定向请求获取到资源。如果是true,跟随源站3xx重定向请求获取到资源。否则,OBS会透传3XX响应,不获取资源。该值默认值是false,如果设置为false则会忽略。 类型:Boolean 取值范围:false或true |
是 |
mirrorHttpHeader |
HTTP header传递规则。 类型:Container |
否 |
passAll |
是否透传全部HTTP header到源端。 以下HTTP header类型不支持透传: 1.以下前缀开头的header: x-obs- x-amz- 2.所有标准HTTP header,例如: Content-Length Authorization Date passAll与pass互斥。 类型:bool 取值范围:false或true |
否 |
pass |
指定透传的HTTP header列表。 类型:List 取值范围:最大10个,每个长度[1, 63],key只支持字母(大小写)、数字、中划线、下划线 |
否 |
remove |
不允许透传的HTTP header列表。 remove优先级高于pass和passAll。 类型:List 取值范围:最大10个,每个长度[1, 63],key只支持字母(大小写)、数字、中划线、下划线 |
否 |
set |
设置透传的HTTP header值列表。 set优先级高于remove,pass和passAll。 如果自定义头域中包含了Referer头域,必须将redirectWithoutReferer设置为true,不然会被覆盖 类型:List 取值范围:最大10个 |
否 |
key |
设置需要透传HTTP header的关键字。 多条key之间不允许重复。 类型:String 取值范围:长度[1, 63],只支持字母(大小写)、数字、中划线、下划线 |
否 |
value |
设置需要透传HTTP header的值。 类型:String 取值范围:长度[0, 2048] |
否 |
replaceKeyWith |
添加前后缀。去源端下载对象的时候,如果需要添加前缀或后缀,则修改此项配置为prefix${key}suffix。如果不需要增加前后缀,则配置为${key}。 类型:String 取值范围:prefix${key}suffix。 ${key}为关键字,prefix为要添加的前缀,suffix为要添加的后缀。同时prefix和suffix的总长度[0, 1023] |
否 |
replaceKeyPrefixWith |
替换前缀objectKeyPrefixEquals的字符串。如果去源端下载对象时,需要替换当前的对象名前缀,则修改此项配置。 如果replaceKeyWith和ReplaceKeyPrefixWith同时为空,则ReplaceKeyPrefixWith生效。同时非空为非法请求。 类型:String 取值范围:长度[0, 1023] |
否 |
vpcEndpointURN |
终端节点服务的URN。 类型:String 取值范围:长度[0, 127] |
否 |
redirectWithoutReferer |
是否将原host作为referer头域携带到重定向的目的地址去。false为需要携带, true为不携带。 该值默认值是false,如果设置为false则会忽略。 类型:Boolean 默认值: false |
否 |
mirrorAllowHttpMethod |
如果公有桶添加HEAD后,表示同时支持HEAD类请求回源,可以通过HEAD类请求获取源站对象的元数据信息,但不会从源站获取对象。 类型:List |
否 |
响应消息样式
HTTP/1.1 status Server: OBS Date: date Content-Length: length
响应消息头
该请求的响应消息使用公共消息头,具体请参考表1。
响应消息元素
该请求的响应消息中不带消息元素。
请求示例
PUT /?mirrorBackToSource HTTP/1.1 Host: bucketname.obs.cn-north-4.myhuaweicloud.com Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo= Content-Type: application/json Content-Length: 1049 Date: Tue, 21 Jul 2020 15:38:30 GMT { "rules": [{ "id": "abc123", "condition": { "httpErrorCodeReturnedEquals": "404", "objectKeyPrefixEquals": "video/" }, "redirect": { "agency": "agency", "publicSource": { "sourceEndpoint": { "master":["http://bucket1.xxx.yyy.com", "https://bucket2.xxx.yyy.com"], "slave": ["http://bucket3.xxx.yyy.com", "https://bucket4.xxx.yyy.com"] } }, "retryConditions": ["4XX", "5XX"], "passQueryString": true, "mirrorFollowRedirect": true, "redirectWithoutReferer": true, "mirrorAllowHttpMethod":["HEAD"], "mirrorHttpHeader": { "passAll": false, "pass": ["content-encoding"], "remove": ["content-type"], "set": [{ "key": "helloworld", "value": "2222" }] }, "replaceKeyWith": "prefix${key}suffix", "replaceKeyPrefixWith": "picture/", "vpcEndpointURN": "001" } }] }
响应示例
HTTP/1.1 201 Created Server: OBS Date: Tue, 07 Jul 2020 07:29:13 GMT Content-Length: 0