更新时间:2024-05-17 GMT+08:00

设置镜像回源规则

功能介绍

本接口用于为指定桶配置镜像回源策略。接口是幂等的,如果桶上已存在相同策略内容,则返回成功,status code返回值为200;否则status code返回值为201。

请求消息样式

PUT /?mirrorBackToSource HTTP/1.1
Host: bucketname.obs.region.myhuaweicloud.com 
Authorization: authorization
Content-Type: application/json
Content-Length: length
Date: date

policy json body

请求消息参数

该请求消息中不使用消息参数。

请求消息头

该请求使用公共消息头,具体参见表3

请求消息元素

表1 请求消息元素

名称

描述

是否必选

rules

策略规则数组。

类型:Container

取值范围:数组大小[1, 10]

说明:

同一个桶下的不同策略前缀不能重复和起始包含,委托建议使用同一个。

表2 rules参数说明

名称

描述

是否必选

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

响应消息元素

该请求的响应消息中不带消息元素。

错误响应消息

无特殊错误,所有错误已经包含在表2OEF错误码中。

请求示例

PUT /?mirrorBackToSource HTTP/1.1
Host: bucketname.obs.region.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