更新时间:2026-08-10 GMT+08:00

获取镜像回源规则(Java SDK)

功能介绍

获取指定桶设置的镜像回源规则。

接口约束

  • 您必须是桶拥有者或者拥有获取镜像回源规则的权限,才能调用本接口。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetMirrorBackToSource权限,如果使用桶策略则需授予GetMirrorBackToSource权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略自定义创建桶策略
  • OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点

方法定义

obsClient.getBucketMirrorBackToSource(GetBucketMirrorBackToSourceRequest request)

请求参数说明

表1 请求参数列表

参数名称

参数类型

是否必选

描述

request

表2 GetBucketMirrorBackToSourceRequest

必选

参数解释

获取镜像回源规则请求参数,详见表2 GetBucketMirrorBackToSourceRequest

表2 GetBucketMirrorBackToSourceRequest

参数名称

参数类型

是否必选

描述

bucketName

String

必选

参数解释

桶名。

约束限制:

  • 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。
  • 桶命名规则如下:
    • 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。
    • 禁止使用IP地址。
    • 禁止以“-”或“.”开头及结尾。
    • 禁止两个“.”相邻(如:“my..bucket”)。
    • 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。
  • 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。

默认取值:

返回结果说明

表3 GetBucketTrashResult

参数名称

参数类型

描述

statusCode

int

参数解释:

HTTP状态码。

取值范围:

状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。

完整的状态码列表请参见状态码

默认取值:

responseHeaders

Map<String, Object>

参数解释:

HTTP响应消息头列表,由多个元组构成。元组中String代表响应消息头的名称,Object代表响应消息头的值。

默认取值:

mirrorBackToSourceConfiguration

表4 MirrorBackToSourceConfiguration

参数解释:

镜像回源配置,详见表4 MirrorBackToSourceConfiguration

表4 MirrorBackToSourceConfiguration

参数名称

参数类型

描述

rules

List<表5 MirrorBackToSourceRule>

参数解释:

镜像回源规则列表,具体请详见表5 MirrorBackToSourceRule

表5 MirrorBackToSourceRule

参数名称

参数类型

描述

id

String

参数解释:

规则ID。当前桶上配置的镜像回源规则的唯一标识。

condition

表6 MirrorBackCondition

参数解释:

触发回源功能的条件,请详见表6 MirrorBackCondition

redirect

表7 MirrorBackRedirect

参数解释:

实现回源功能的相关参数,请详见表7 MirrorBackRedirect

表6 MirrorBackCondition

参数名称

参数类型

描述

httpErrorCodeReturnedEquals

String

参数解释:

触发回源功能的错误码。当下载请求返回此错误码时,会触发回源功能。

默认取值:

404

objectKeyPrefixEquals

String

参数解释:

触发回源功能的对象名前缀。当触发回源的请求里对象名满足此前缀,才会继续执行回源功能。

约束限制:

  • 当前缀配置为空时,默认所有对象都匹配。
  • 同一个桶上多条规则的前缀之间不允许重复和起始包含。
表7 MirrorBackRedirect

参数名称

参数类型

描述

agency

String

参数解释:

委托名。客户通过委托赋予OBS服务“查询用户桶内指定对象是否存在”以及“向用户桶内上传对象”的权限。

publicSource

表8 MirrorBackPublicSource

参数解释:

公共可访问的源端配置。当源端为公共可访问的资源时,必选。publicSource是sourceEndpoint的父节点,请详见表8 MirrorBackPublicSource

vpcEndpointURN

String

参数解释:

终端节点服务的URN。

retryConditions

List<String>

参数解释:

回源地址切换的条件。

passQueryString

Boolean

参数解释:

是否携带请求字符串。

取值范围:

  • false:不会将OBS请求中的queryString传递到源站。
  • true:会将OBS请求中的queryString传递到源站。

mirrorFollowRedirect

Boolean

参数解释:

是否跟随源站3xx重定向请求获取到资源。

取值范围:

  • false:OBS会透传3XX响应,不获取资源。
  • true:跟随源站3XX重定向请求获取到资源。

mirrorHttpHeader

表10 MirrorBackHttpHeader

参数解释:

HTTP header传递规则。mirrorHttpHeader是passAll、pass、remove、set的父节点,请详见表10 MirrorBackHttpHeader

replaceKeyWith

String

参数解释:

去源端下载对象的时候是否添加前后缀。

replaceKeyPrefixWith

String

参数解释:

替换前缀objectKeyPrefixEquals的字符串。如果去源端下载对象时,需要替换当前的对象名前缀,则修改此项配置。

redirectWithoutReferer

Boolean

参数解释:

是否将原host作为referer头域携带到重定向的目的地址去。

取值范围:

false:将原host作为referer头域携带到重定向的目的地址去。

true:不会将原host作为referer头域携带到重定向的目的地址去。

mirrorAllowHttpMethod

List<String>

参数解释:

支持透传的请求方法。

取值范围:

  • GET:请求获取桶内对象。
  • HEAD:请求获取桶内对象的元数据信息。
表8 MirrorBackPublicSource

参数名称

参数类型

是否必选

描述

sourceEndpoint

表9 MirrorBackSourceEndpoint

可选

参数解释:

公共可访问的源端地址。sourceEndpoint是master、slave的父节点,请详见表9 MirrorBackSourceEndpoint

表9 MirrorBackSourceEndpoint

参数名称

参数类型

是否必选

描述

master

List<String>

可选

参数解释:

主源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶域名地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。

slave

List<String>

可选

参数解释:

备源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶域名地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。

表10 MirrorBackHttpHeader

参数名称

参数类型

是否必选

描述

passAll

Boolean

可选

参数解释:

是否透传全部HTTP header到源端。

取值范围:

  • false:不透传全部HTTP header到源端
  • true:透传全部HTTP header到源端

pass

List<String>

可选

参数解释:

指定透传的HTTP header列表。

remove

List<String>

可选

参数解释:

不允许透传的HTTP header列表。

set

List<表11 MirrorBackHttpHeaderSet>

可选

参数解释:

设置透传的HTTP header值列表,请参见表11 MirrorBackHttpHeaderSet

表11 MirrorBackHttpHeaderSet

参数名称

参数类型

是否必选

描述

key

String

可选

参数解释:

设置需要透传HTTP header的关键字。

value

String

可选

参数解释:

设置需要透传HTTP header的值。

代码示例

本示例用于获取examplebucket桶的镜像回源配置。
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.mirrorback.GetBucketMirrorBackToSourceRequest;
import com.obs.services.model.mirrorback.GetBucketMirrorBackToSourceResult;
import com.obs.services.model.mirrorback.MirrorBackRedirect;
import com.obs.services.model.mirrorback.MirrorBackSourceEndpoint;
import com.obs.services.model.mirrorback.MirrorBackToSourceConfiguration;
import com.obs.services.model.mirrorback.MirrorBackToSourceRule;
public class GetBucketMirrorBackToSource {
    public static void main(String[] args) {
        // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。
        // 您可以登录访问管理控制台获取访问密钥AK/SK
        String ak = System.getenv("ACCESS_KEY_ID");
        String sk = System.getenv("SECRET_ACCESS_KEY_ID");
        // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。
        // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。
        String securityToken = System.getenv("SECURITY_TOKEN");
        // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。
        // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。
        String endPoint = System.getenv("ENDPOINT");
        ObsConfiguration obsConfiguration = new ObsConfiguration();
        obsConfiguration.setEndPoint(endPoint);
        ObsClient obsClient = new ObsClient(ak, sk, securityToken, obsConfiguration);
        try {
            String exampleBucket = "examplebucket";
            GetBucketMirrorBackToSourceRequest request = new GetBucketMirrorBackToSourceRequest(exampleBucket);
            GetBucketMirrorBackToSourceResult result = obsClient.getBucketMirrorBackToSource(request);
            System.out.println("GetBucketMirrorBackToSource successfully");
            MirrorBackToSourceConfiguration config = result.getMirrorBackToSourceConfiguration();
            if (config != null && config.getRules() != null) {
                for (MirrorBackToSourceRule rule : config.getRules()) {
                    System.out.println("Rule ID: " + rule.getId());
                    if (rule.getCondition() != null) {
                        System.out.println("Condition HTTP Error Code: "
                            + rule.getCondition().getHttpErrorCodeReturnedEquals());
                        System.out.println("Condition Object Key Prefix: "
                            + rule.getCondition().getObjectKeyPrefixEquals());
                    }
                    if (rule.getRedirect() != null) {
                        MirrorBackRedirect redirect = rule.getRedirect();
                        System.out.println("Agency: " + redirect.getAgency());
                        System.out.println("Pass Query String: " + redirect.getPassQueryString());
                        System.out.println("Mirror Follow Redirect: " + redirect.getMirrorFollowRedirect());
                        if (redirect.getPublicSource() != null
                            && redirect.getPublicSource().getSourceEndpoint() != null) {
                            MirrorBackSourceEndpoint ep =
                                redirect.getPublicSource().getSourceEndpoint();
                            System.out.println("Master Endpoints: " + ep.getMaster());
                            System.out.println("Slave Endpoints: " + ep.getSlave());
                        }
                    }
                }
            }
        } catch (ObsException e) {
            System.out.println("GetBucketMirrorBackToSource failed");
            // 请求失败,打印http状态码
            System.out.println("HTTP Code:" + e.getResponseCode());
            // 请求失败,打印服务端错误码
            System.out.println("Error Code:" + e.getErrorCode());
            // 请求失败,打印详细错误信息
            System.out.println("Error Message:" + e.getErrorMessage());
            // 请求失败,打印请求id
            System.out.println("Request ID:" + e.getErrorRequestId());
            System.out.println("Host ID:" + e.getErrorHostId());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("GetBucketMirrorBackToSource failed");
            // 其他异常信息打印
            e.printStackTrace();
        }
    }
}

相关链接

  • 更多示例代码,请参见Github示例
  • 获取镜像回源规则过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码