设置在线解压策略-PutDecompressPolicy
功能介绍
OBS支持ZIP包上传后自动解压并存放在指定目录。桶设置了在线解压策略后,上传到该桶内的ZIP包如果匹配解压策略,ZIP包将会自动解压到指定目录里。本接口用于为指定桶配置ZIP文件解压策略。了解更多在线解压相关信息,请参见在线解压 。
URI 参数 obscompresspolicy 是 OBS 侧定义的子资源名称,是对"压缩/解压缩"功能的统称;接口名使用 DecompressPolicy 是对该策略实际业务语义(解压缩)的精确表达。
接口约束
权限限制:
- 需要使用IAM的角色与策略授权功能,增加Tenant Administrator权限后才能设置、获取、删除在线解压策略。
- 在线解压源需使用IAM创建云服务委托,委托OBS获取桶内数据,上传数据到桶内。委托需要给OBS服务授予obs:object:PutObject、obs:object:GetObject、obs:object:AbortMultipartUpload权限。
包及文件大小限制:
- 单个ZIP包大小上限为1GB。
- 单个ZIP包内最多可包含65536个文件。
- ZIP包内,单个文件解压后最大为40GB。
时间限制:
- ZIP包解压任务最大时长为10分钟。
功能限制:
- ZIP包的后缀必须为zip。
- ZIP包名称中不可带有中文标点符号、特殊符号和特殊编码,如:\/:*?"<>|@#¥。
- 针对ZIP包嵌套的场景,在线解压策略的事件类型需设置为ObjectCreated:*或ObjectCreated:CompleteMultipartUpload。
- 目前不支持解压任务完成后给用户发送消息通知。
- 目前仅支持解压压缩算法为deflated的ZIP包,此处的压缩算法与WINRAR等软件提供的Store、Normal等压缩方法不等同。
- 解压路径加上压缩包解压出文件的文件名,总字符长度不可超过512,否则会导致解压失败。
- 目前不支持解压加密ZIP包。
- 不支持企业联邦用户使用在线解压功能,更多关于联邦用户的相关信息请参考华为云账号、华为账号、IAM用户、企业联邦用户的关系和身份提供商概述。
URI
PUT /
请求消息样式
PUT /?obscompresspolicy HTTP/1.1
Host: bucketname.obs.cn-north-4.myhuaweicloud.com
Authorization: authorization
Content-Type: application/json
Content-Length: length
Date: date
{
"rules": [{
"id": "ruleid",
"project": "your project id",
"agency": "testagency",
"events": ["ObjectCreated:*"],
"prefix": "decompress",
"suffix": ".zip",
"overwrite": 0,
"decompresspath": "after-decompress/",
"policytype": "decompress"
}]
} URI参数(URI Parameters)
| 参数 | 类型 | 描述 |
|---|---|---|
| obscompresspolicy | String | 参数解释: 标识操作在线解压策略子资源的查询参数,作为URI参数携带,无参数值。该参数用于区分桶上的不同策略子资源,表示本次请求针对的是在线解压策略。 约束限制: 不涉及。 取值范围: 空值(仅需key存在即可,无需赋值,即 ?obscompresspolicy)。 默认取值: 不涉及 |
请求头参数(Request headers)
该请求使用公共请求头,具体参见表3。
请求体参数(Request body)
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| rules | 是 | Container | 参数解释: 策略规则数组。 约束限制: 同一个桶下的不同策略前缀不能重复和起始包含,后缀不能结尾包含。同一个桶下的不同策略所使用的IAM委托,建议使用同一个委托。 取值范围: 数组大小[1, 10]。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| id | 是 | String | 参数解释: 解压策略名称。当前桶上配置的解压规则的唯一标识。满足“^[a-zA-Z0-9_-]{1,256}$”,即长度为1~256个字符。只能由大写或小写的英文字母、数字、下划线(_)和连字符(-)组成。例如:event_0001。 约束限制: 只允许大小写英文字母、数字、下划线(_)和连字符(-),同一桶内策略ID不可重复。 取值范围: [1, 256] 默认取值: 不涉及。 |
| project | 是 | String | 参数解释: 项目ID。 约束限制: 不能为空,必须是当前租户下合法有效的项目ID。 取值范围: 当前租户下合法有效的项目ID。 默认取值: 不涉及。 |
| agency | 是 | String | 参数解释: 委托名。客户通过委托赋予OBS服务查询用户桶内指定对象是否存在以及向用户桶内上传对象的权限。 约束限制: 不能为空,必须是已授权给OBS服务的委托名称。 取值范围: 已授权的委托名称。 默认取值: 不涉及。 |
| events | 是 | Array of String | 参数解释: 触发事件类型。 约束限制: 不能为空,事件不能重复,通配事件(如ObjectCreated:*)与其子事件不能同时配置。 取值范围:
默认取值: 不涉及。 |
| prefix | 否 | String | 参数解释: 匹配规则前缀。 约束限制: prefix与suffix长度各自不超过1024个字符,两者合计也不超过1024个字符。同一桶下不同策略的前后缀组合不能重复和起始包含/结尾包含。 取值范围: 1~1024字符。 默认取值: 不涉及。 |
| suffix | 是 | String | 参数解释: 匹配规则后缀。 约束限制: 必须是系统支持的压缩文件类型后缀(现仅支持.zip) 取值范围: 系统支持的压缩文件类型后缀.zip。 默认取值: 不涉及。 |
| overwrite | 是 | Integer | 参数解释: 解压后同名文件的处理方式。 约束限制: 取值必须为0、1或2,其他值非法。 取值范围:
默认取值: 不涉及。 |
| decompresspath | 否 | String | 参数解释: 文件解压后存放的路径,不为空时必须以“/”结尾,且不能以“/”开头。 约束限制: 不为空时必须以"/"结尾,且不能以"/"开头。decompresspath长度与规则ID长度、委托名长度之和不超过800。 取值范围: decompresspath的单独长度为[0, 800],且 decompresspath + id + agency 总长度不超过800。 默认取值: 无。 |
| policytype | 否 | String | 参数解释: 文件解压策略类型。 约束限制: 必须填写"decompress"。 取值范围: decompress:执行解压操作。 默认取值: decompress。 |
请保证解压策略名称、解压路径、IAM委托名称长度之和不超过800。
响应消息样式
HTTP/1.1 status Server: OBS Date: date Content-Length: length
响应头 (Response Headers)
该请求的响应消息使用公共响应头,具体请参考表1。
响应体 (Response Body)
该请求的响应消息中不带消息元素。
请求示例
PUT /?obscompresspolicy HTTP/1.1
Host: bucketname.obs.cn-north-4.myhuaweicloud.com
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=
Content-Type: application/json
Content-Length: 497
Date: Tue, 21 Jul 2020 15:38:30 GMT
{
"rules": [{
"id": "ruleid",
"project": "your project id",
"agency": "testagency",
"events": ["ObjectCreated:*"],
"prefix": "decompress",
"suffix": ".zip",
"overwrite": 0,
"decompresspath": "after-decompress/",
"policytype": "decompress"
}]
} 响应示例
HTTP/1.1 201 Created Server: OBS Date: Tue, 07 Jul 2020 07:29:13 GMT Content-Length: 0