
# 获取在线解压策略(Java SDK)
#### 功能介绍
可通过本接口查询指定桶的文件解压策略。如果策略存在，则返回成功，status code返回值为200。了解更多在线解压相关信息，请参见[在线解压](https://support.huaweicloud.com/usermanual-obs/obs_03_0368.html)。
#### 接口约束
- 需要使用IAM的角色与策略授权功能，增加Tenant Administrator权限后才能设置、获取、删除在线解压策略。
- 在线解压源需使用IAM创建云服务委托，委托OBS获取桶内数据，上传数据到桶内。委托需要给OBS服务授予obs:object:PutObject、obs:object:GetObject、obs:object:AbortMultipartUpload权限。

- OBS支持的region以及region与endPoint的对应关系，详细信息请参见[地区与终端节点](https://developer.huaweicloud.com/endpoint?OBS)。
 
#### 方法定义
obsClient.getBucketCompressPolicy(GetBucketCompressPolicyRequest request)
#### 请求参数说明
表1请求参数列表 
| **参数名称** | **参数类型**                                                         | **是否必选** | **描述**                                                                                                                         |
|:---|:---|:---|:---|
| request  | [表2 GetBucketCompressPolicyRequest] | 必选       | **参数解释** **：** 获取在线解压策略请求参数，详见[表2 GetBucketCompressPolicyRequest]。 |
   
 表2GetBucketCompressPolicyRequest 
| **参数名称**   | **参数类型** | **是否必选** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| bucketName | String   | 必选       | **参数解释** **：** 桶名。 **约束限制：** - 桶的名字需全局唯一，不能与已有的任何桶名称重复，包括其他用户创建的桶。  - 桶命名规则如下： - 3～63个字符，数字或字母开头，支持小写字母、数字、"-"、"."。  - 禁止使用IP地址。  - 禁止以"-"或"."开头及结尾。  - 禁止两个"."相邻（如："my..bucket"）。  - 禁止"."和"-"相邻（如："my-.bucket"和"my.-bucket"）。    - 同一用户在同一个区域多次创建同名桶不会报错，创建的桶属性以第一次请求为准。   **默认取值：** 无 |
   
#### 返回结果说明
表3GetBucketTrashResult 
| **参数名称**                    | **参数类型**                              | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| statusCode                  | int                                   | **参数解释：** HTTP状态码。 **取值范围：** 状态码是一组从2xx（成功）到4xx或5xx（错误）的数字代码，状态码表示了请求响应的状态。 完整的状态码列表请参见[状态码](https://support.huaweicloud.com/api-obs/obs_04_0114.html)。 **默认取值：** 无 |
| responseHeaders             | Map\<String, Object\>                 | **参数解释：** HTTP响应消息头列表，由多个元组构成。元组中String代表响应消息头的名称，Object代表响应消息头的值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| compressPolicyConfiguration | [表4] | **参数解释** **：** 策略规则数组。详见[表4]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表4CompressPolicyConfiguration 
| **参数名称** | **参数类型**                                      | **描述**                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| rules    | List\<[表5]\> | **参数解释** **：** 策略规则数组。详见[表5]。 **约束限制：** 同一个桶下的不同策略前缀不能重复和起始包含，委托建议使用同一个。 **取值范围：** 数组大小\[1, 10\]。 **默认取值**： 无 |
   
 表5CompressPolicyRule 
| **参数名称**       | **参数类型**       | **描述**                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| id             | String         | **参数解释：** 解压策略名称。当前桶上配置的解压规则的唯一标识。例如：event_0001。                                                                                                                                                                                                                                                                                                                        |
| project        | String         | **参数解释：** 项目ID。                                                                                                                                                                                                                                                                                                                                                         |
| agency         | String         | **参数解释：** IAM委托名。                                                                                                                                                                                                                                                                                                                                                       |
| events         | List\<String\> | **参数解释：** 触发事件类型。 **取值范围：** \["ObjectCreated:\*"\] \["ObjectCreated:Put"\] \["ObjectCreated:Post"\] \["ObjectCreated:Copy"\] \["ObjectCreated:CompleteMultipartUpload"\]           |
| suffix         | String         | **参数解释：** 匹配规则后缀。                                                                                                                                                                                                                                                                                                                                                     |
| prefix         | String         | **参数解释：** 匹配规则前缀。                                                                                                                                                                                                                                                                                                                                                       |
| overwrite      | int            | **参数解释：** 解压后同名文件的处理方式。 **取值范围：** - 0：不覆盖跳过。  - 1：不覆盖，以文件的CRC32值重命名。  - 2：覆盖。   |
| decompresspath | String         | **参数解释：** 文件解压后存放的路径。                                                                                                                                                                                                                                                                                                                                                 |
| policytype     | String         | **参数解释：** 文件解压策略类型。 **取值范围：** decompress：执行解压操作。                                                                                                                                                                                                                                                          |
   
#### 代码示例
本示例用于获取examplebucket桶的在线解压策略。
```
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import com.obs.services.model.compress.CompressPolicyRule;
import com.obs.services.model.compress.GetBucketCompressPolicyRequest;
import com.obs.services.model.compress.GetBucketCompressPolicyResult;
public class GetBucketCompressPolicy {
    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";
            GetBucketCompressPolicyResult result =
                obsClient.getBucketCompressPolicy(new GetBucketCompressPolicyRequest(exampleBucket));
            System.out.println("GetBucketCompressPolicy successfully");
            for (CompressPolicyRule rule : result.getCompressPolicyConfiguration().getRules()) {
                System.out.println("Rule Id:"+ rule.getId());
                System.out.println("Project Id:"+ rule.getProject());
                System.out.println("Agency:"+ rule.getAgency());
                System.out.println("Events:"+ rule.getEvents());
                System.out.println("Prefix:"+ rule.getPrefix());
                System.out.println("Suffix:"+ rule.getSuffix());
                System.out.println("Overwrite:"+ rule.getOverwrite());
                System.out.println("Decompress Path:"+ rule.getDecompresspath());
                System.out.println("Policy Type:"+ rule.getPolicytype());
            }
        } catch (ObsException e) {
            System.out.println("GetBucketCompressPolicy 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("GetBucketCompressPolicy failed");
            // 其他异常信息打印
            e.printStackTrace();
        }
    }
}
```
#### 相关链接
- 更多示例代码，请参见[Github示例](https://github.com/huaweicloud/huaweicloud-sdk-java-obs/blob/master/app/src/test/java/samples_java/PFSBucketAndObjectOperationSample.java)。
- 获取在线解压策略过程中返回的错误码含义、问题原因及处理措施可参考[OBS错误码](https://support.huaweicloud.com/api-obs/obs_04_0115.html#section1)。
 
