# 获取DIS通知策略(Java SDK)
#### 功能介绍
本接口用于查询指定桶的DIS通知策略信息。如果策略存在，则返回成功，status code返回值为200。
![](https://support.huaweicloud.com/sdk-java-devg-obs/public_sys-resources/notice_3.0-zh-cn.png)
开发过程中，您有任何问题可以在Github上[提交issue](https://github.com/huaweicloud/huaweicloud-sdk-java-obs/issues)，或者在[华为云对象存储服务论坛](https://bbs.huaweicloud.com/forum/forum-620-1.html)中发帖求助。
#### 接口约束
- 您必须是桶拥有者或者拥有**Tenant Administrator** 权限，才能调用本接口。配置Tenant Administrator权限，需要使用**角色与策略授权** （旧版IAM，即IAM v3接口），授权操作请参考[使用IAM授权](https://support.huaweicloud.com/qs-iam/iam_01_0030.html)。

- OBS支持的region以及region与endPoint的对应关系，详细信息请参见[地区与终端节点](https://developer.huaweicloud.com/endpoint?OBS)。
 
#### 方法定义
obsClient.getBucketDisPolicy(GetBucketDisPolicyRequest request)
#### 请求参数说明
表1请求参数列表 
| **参数名称** | **参数类型**                                               | **是否必选** | **描述**                                                                                                                                 |
|:---|:---|:---|:---|
| request      | [表2 GetBucketDisPolicyRequest] | 必选             | **参数解释** **：** 获取DIS通知策略请求参数，详见[表2 GetBucketDisPolicyRequest]。 |
   
 表2GetBucketDisPolicyRequest 
| **参数名称**     | **参数类型** | **是否必选**                                                 | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| 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代表响应消息头的值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| disPolicyConfiguration                                                              | [表4 DisPolicyConfiguration](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_4508.html#obs_21_4508__table620017614478) | **参数解释** **：** DIS通知规则，详见[表4 DisPolicyConfiguration](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_4508.html#obs_21_4508__table620017614478)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
表4DisPolicyConfiguration 
| **参数名称** | **参数类型**                                                                                                                      | **描述**                                                                                                                                                                   |
|:---|:---|:---|
| rules     | List\<[表5 DisPolicyRule](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_4508.html#obs_21_4508__table614685984013)\> | **参数解释：** DIS通知规则列表，详见[表5 DisPolicyRule](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_4508.html#obs_21_4508__table614685984013)。 |
   
表5DisPolicyRule 
| **参数名称** | **参数类型**       | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| id        | String          | **参数解释** **：** 规则ID。当前桶上配置的DIS策略规则的唯一标识。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| stream    | String        | **参数解释：** DIS服务通道名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| project  | String        | **参数解释：** DIS服务通道所属的项目ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| events     | List\<String\> | **参数解释** **：** OBS事件列表。 **取值范围：** 有效值：长度\[0, 1023\]，值允许为任意字符，支持如下事件类型： - ObjectCreated:\* （所有上传操作）  - ObjectCreated:Put （上传对象）  - ObjectCreated:Post （使用浏览器上传对象）  - ObjectCreated:Copy （拷贝对象）  - ObjectCreated:CompleteMultipartUpload （合并段）  - ObjectRemoved:\* （所有删除操作）  - ObjectRemoved:Delete （指定对象版本号删除对象）  - ObjectRemoved:DeleteMarkerCreated （不指定对象版本号删除对象）   |
| prefix  | String           | **参数解释** **：** 对象名前缀，用于指定的对象名关键字，根据定义的前缀，输入需要过滤的对象的关键字信息，字符越长匹配精度越高。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| suffix   | String        | **参数解释** **：** 对象名后缀。用于指定的对象名关键字，根据定义的后缀，输入需要过滤的对象的关键字信息，字符越长匹配精度越高。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| agency    | String         | **参数解释** **：** IAM委托名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
#### 代码示例
本示例用于获取examplebucket桶的DIS策略。
```
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import com.obs.services.model.dis.DisPolicyRule;
import com.obs.services.model.dis.GetBucketDisPolicyRequest;
import com.obs.services.model.dis.GetBucketDisPolicyResult;
public class GetBucketDisPolicy {
    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";
            GetBucketDisPolicyResult result =
                obsClient.getBucketDisPolicy(new GetBucketDisPolicyRequest(exampleBucket));
            System.out.println("GetBucketDisPolicy successfully");
            for (DisPolicyRule rule : result.getDisPolicyConfiguration().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());
            }
        } catch (ObsException e) {
            System.out.println("GetBucketDisPolicy 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("GetBucketDisPolicy failed");
            // 其他异常信息打印
            e.printStackTrace();
        }
    }
}
```
#### 相关链接
- 更多示例代码，请参见[Github示例](https://github.com/huaweicloud/huaweicloud-sdk-java-obs/blob/master/app/src/test/java/samples_java/PFSBucketAndObjectOperationSample.java)。
- 获取DIS通知策略过程中返回的错误码含义、问题原因及处理措施可参考[OBS错误码](https://support.huaweicloud.com/api-obs/obs_04_0115.html#section1)。
 
