获取镜像回源规则(Java SDK)
功能介绍
获取指定桶设置的镜像回源规则。
接口约束
- 您必须是桶拥有者或者拥有获取镜像回源规则的权限,才能调用本接口。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetMirrorBackToSource权限,如果使用桶策略则需授予GetMirrorBackToSource权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。
- OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
方法定义
obsClient.getBucketMirrorBackToSource(GetBucketMirrorBackToSourceRequest request)
请求参数说明
| 参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
| request | 必选 | 参数解释: 获取镜像回源规则请求参数,详见表2 GetBucketMirrorBackToSourceRequest。 |
| 参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
| bucketName | String | 必选 | 参数解释: 桶名。 约束限制:
默认取值: 无 |
返回结果说明
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| statusCode | int | 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。 完整的状态码列表请参见状态码。 默认取值: 无 |
| responseHeaders | Map<String, Object> | 参数解释: HTTP响应消息头列表,由多个元组构成。元组中String代表响应消息头的名称,Object代表响应消息头的值。 默认取值: 无 |
| mirrorBackToSourceConfiguration | 参数解释: 镜像回源配置,详见表4 MirrorBackToSourceConfiguration |
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| rules | 参数解释: 镜像回源规则列表,具体请详见表5 MirrorBackToSourceRule。 |
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| id | String | 参数解释: 规则ID。当前桶上配置的镜像回源规则的唯一标识。 |
| condition | 参数解释: 触发回源功能的条件,请详见表6 MirrorBackCondition。 | |
| redirect | 参数解释: 实现回源功能的相关参数,请详见表7 MirrorBackRedirect。 |
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| httpErrorCodeReturnedEquals | String | 参数解释: 触发回源功能的错误码。当下载请求返回此错误码时,会触发回源功能。 默认取值: 404 |
| objectKeyPrefixEquals | String | 参数解释: 触发回源功能的对象名前缀。当触发回源的请求里对象名满足此前缀,才会继续执行回源功能。 约束限制:
|
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| agency | String | 参数解释: 委托名。客户通过委托赋予OBS服务“查询用户桶内指定对象是否存在”以及“向用户桶内上传对象”的权限。 |
| publicSource | 参数解释: 公共可访问的源端配置。当源端为公共可访问的资源时,必选。publicSource是sourceEndpoint的父节点,请详见表8 MirrorBackPublicSource。 | |
| vpcEndpointURN | String | 参数解释: 终端节点服务的URN。 |
| retryConditions | List<String> | 参数解释: 回源地址切换的条件。 |
| passQueryString | Boolean | 参数解释: 是否携带请求字符串。 取值范围:
|
| mirrorFollowRedirect | Boolean | 参数解释: 是否跟随源站3xx重定向请求获取到资源。 取值范围:
|
| mirrorHttpHeader | 参数解释: 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> | 参数解释: 支持透传的请求方法。 取值范围:
|
| 参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
| sourceEndpoint | 可选 | 参数解释: 公共可访问的源端地址。sourceEndpoint是master、slave的父节点,请详见表9 MirrorBackSourceEndpoint。 |
| 参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
| master | List<String> | 可选 | 参数解释: 主源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶域名地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。 |
| slave | List<String> | 可选 | 参数解释: 备源端地址。如果源端为HTTP公共可访问的桶,则此地址为桶域名地址。如果源端为其他云厂商的私有桶,则此地址为区域域名地址。 |
| 参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
| passAll | Boolean | 可选 | 参数解释: 是否透传全部HTTP header到源端。 取值范围:
|
| pass | List<String> | 可选 | 参数解释: 指定透传的HTTP header列表。 |
| remove | List<String> | 可选 | 参数解释: 不允许透传的HTTP header列表。 |
| set | 可选 | 参数解释: 设置透传的HTTP header值列表,请参见表11 MirrorBackHttpHeaderSet。 |
代码示例
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();
}
}
}