
# 设置DIS通知策略-PutDisPolicy
#### 功能介绍
可以通过本接口为指定桶配置DIS通知策略。了解更多设置DIS通知策略的相关信息，请参见[使用DIS发送OBS事件通知](https://support.huaweicloud.com/usermanual-obs/obs_03_0147.html)。
#### 接口约束
- 需要使用IAM的角色与策略授权功能，增加Tenant Administrator权限后才能设置、获取、删除DIS通知策略。使用DIS消息通知需要使用IAM的角色与策略授权功能，创建对OBS云服务的委托，委托赋予的权限需为数据接入服务DIS的DIS User权限。
- 一个桶中最多同时配置10条DIS通知规则。
- 对于时延敏感（秒级）的业务，消息通知无法保证时延。
- 新创建的DIS通知将在5分钟之内生效。
- 一个桶的多条DIS通知规则不允许重复，即任意对象在发生任意事件时都不能同时匹配两条以上的DIS通知规则，重复规则会创建失败。
  ![](https://support.huaweicloud.com/api-obs/public_sys-resources/note_3.0-zh-cn.png)
  针对同一事件，如果配置了一条前后缀都为空的规则，则不允许再配置第二条规则。前后缀都为空表示对所有对象生效。
  例如：针对Put事件，已存在一条规则A，定义的前缀是"abcd"，后缀是".txt"。如果要创建另外一条针对Put事件的规则B，则规则B配置不同前后缀的结果如[表1]所示。
   表1规则B前后缀配置场景及结果 
  | 规则A前后缀配置                                                                                                     | 规则B前后缀配置                                                                                                       | 规则B创建结果 | 原因                           |
  |:---|:---|:---|:---|
  | 前缀：abcd 后缀：.txt | 前缀：abcd 后缀：.txt   | 失败      | 前后缀相同                        |
  | 前缀：abcd 后缀：.txt | 前缀：abcd 后缀：空      | 失败      | 前缀相同，后缀B为空（空后缀匹配所有后缀，包含A的后缀） |
  | 前缀：abcd 后缀：.txt | 前缀：ab 后缀：xt         | 失败      | 前缀B包含A，后缀B包含A                |
  | 前缀：abcd 后缀：.txt | 前缀：abef 后缀：.txt | 成功      | 前缀不同，后缀相同                    |
  | 前缀：abcd 后缀：.txt | 前缀：abcd 后缀：.mp4    | 成功      | 前缀相同，后缀不同                    |
     
  
 
#### 授权信息
您必须是拥有**Tenant Administrator** 权限，才能调用本接口。配置Tenant Administrator权限，需要使用**角色与策略授权** （旧版IAM，即IAM v3接口），授权操作请参考[使用IAM授权](https://support.huaweicloud.com/qs-iam/iam_01_0030.html)。
#### URI
PUT /
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-obs/obs_04_0006.html)。调用前需要先[计算API签名](https://support.huaweicloud.com/api-obs/obs_04_0009.html)，并将签名添加到请求中。
您还可以使用[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/OBS/doc?api=SetDisPolicy)在线调试接口。
#### 请求消息样式
```
PUT /?disPolicy HTTP/1.1
Host: bucketname.obs.cn-north-4.myhuaweicloud.com 
Authorization: authorization
Content-Type: application/json
Content-Length: length
Date: date
Body:
{
    "rules": [{
        "id":"rule_id",
        "stream": "stream_name",
        "project": "project_id",
        "events": ["ObjectCreated:*", "ObjectRemoved:*"],
        "prefix": "",
        "suffix": "",
        "agency": "agency_name"
    }]
}
```
#### URI参数（URI Parameters）
| 参数        | 类型     | 描述                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| disPolicy | string | **参数解释：** 标识操作DIS策略子资源的查询参数，作为URI参数携带，无参数值。该参数用于区分桶上的不同策略子资源，表示本次请求针对的是DIS事件通知策略。 **取值范围：** 空值（仅需key存在即可，无需赋值，即 ?disPolicy）。 |
   
#### 请求头参数（Request headers）
该请求使用公共请求头，具体参见[表3](https://support.huaweicloud.com/api-obs/obs_04_0007.html#ZH-CN_TOPIC_0136436606__table25197309)。
#### 请求体参数（Request body）
表2请求体参数（Request body） 
| 参数名称  | 是否必选 | 参数类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| rules | 是    | Container | **参数解释：** 策略规则数组，数组大小的取值范围为\[1, 10\]，详见[rules参数说明](https://support.huaweicloud.com/api-obs/obs_04_0119.html#ZH-CN_TOPIC_0251973976__table122214319472)。rules是id、stream、project、agency、events、prefix、suffix的父节点。 **约束限制：** 同一个桶下的不同策略前缀不能重复和起始包含，委托建议使用同一个。 |
   
表3rules参数说明 
| 参数名称    | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| id      | 是    | String | **参数解释：** 设置DIS通知策略的规则ID。当前桶上配置的DIS策略规则的唯一标识。 **约束限制：** 该规则ID为桶内唯一。 **取值范围：** 长度为1\~256的字符串，并且字符只能是大写字母、小写字母、数字、下划线（_）或连字符（-）。 **默认取值：** 不涉及                           |
| stream  | 是    | String | **参数解释：** DIS服务通道名称。 **约束限制：** 需要先在DIS服务创建此通道。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                 |
| project | 是    | String | **参数解释：** DIS服务通道所属的项目ID。 **约束限制：** 不涉及 **取值范围：** 获取项目ID的操作请参见[获取账号、IAM用户、项目、用户组、区域、委托方账号ID、委托的名称和ID](https://support.huaweicloud.com/api-obs/obs_04_0117.html)。 **默认取值：** 不涉及 |
| events  | 是    | Array  | **参数解释：** OBS事件列表。长度为0\~1023的字符串，取值允许为任意字符。支持的事件类型请参见[使用DIS发送OBS事件通知](https://support.huaweicloud.com/usermanual-obs/obs_03_0147.html)。 **约束限制：** 不涉及                                                                                                                                                                                        |
| prefix  | 否    | String | **参数解释：** 对象名前缀。用于指定的对象名关键字，根据定义的前缀，输入需要过滤的对象的关键字信息，字符越长匹配精度越高。 **约束限制：** prefix和suffix加起来长度最大为1024的字符串。 **取值范围：** 长度为0\~1024的字符串。 **默认取值：** 不涉及                             |
| suffix  | 否    | String | **参数解释：** 对象名后缀。用于指定的对象名关键字，根据定义的后缀，输入需要过滤的对象的关键字信息，字符越长匹配精度越高。 **约束限制：** prefix和suffix加起来长度最大为1024的字符串。 **取值范围：** 长度为0\~1024的字符串。 **默认取值：** 不涉及                          |
| agency  | 是    | String | **参数解释：** IAM委托名。 **约束限制：** 被委托方必须包含对OBS的访问权限，赋予的权限必须是DIS服务的DIS Administrator或DIS User。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                       |
   
#### 响应消息样式
```
HTTP/1.1 status
Server: OBS
Date: date
Content-Length: length
```
#### 响应头 (Response Headers)
该请求的响应消息使用公共响应头，具体请参考[表1](https://support.huaweicloud.com/api-obs/obs_04_0013.html#ZH-CN_TOPIC_0173612084__d0e686)。
#### 响应体 (Response Body)
本接口的响应消息中不携带响应体。
#### 错误响应消息
无特殊错误，所有错误已经包含在[错误码概述](https://support.huaweicloud.com/api-obs/obs_04_0115.html)中。
#### 请求示例
```
PUT /?disPolicy HTTP/1.1
Host: bucketname.obs.cn-north-4.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":"event-01",
        "stream": "stream_name",
        "project": "project_id",
        "events": ["ObjectCreated:*", "ObjectRemoved:*"],
        "prefix": "",
        "suffix": "",
        "agency": "dis_agency"
    }]
}
```
#### 响应示例
```
HTTP/1.1 201 Created
Server: OBS
Date: Tue, 07 Jul 2020 07:29:13 GMT
Content-Length: 0
```
#### 相关文档
- 了解更多设置DIS通知策略的相关信息，请参见[使用DIS发送OBS事件通知](https://support.huaweicloud.com/usermanual-obs/obs_03_0147.html)。
- API操作涉及的计费项参见[计费项](https://support.huaweicloud.com/price-obs/obs_42_0002.html)。
 
