更新时间:2024-08-27 GMT+08:00

在线解压

OBS支持ZIP包上传后自动解压。

您可以将批量文件打包成ZIP包后上传至OBS,上传之后压缩包可以自动解压。

使用场景

  • 用户将ZIP包上传到OBS桶后,希望ZIP包能被自动解压并存放在指定目录。
  • OBS批量上传文件时有一些限制,参见OBS批量上传文件。当您需要一次性上传大量的小文件时,可以将所有文件打包成ZIP包,上传后即可解压,省时省力。

前提条件

使用在线解压特性的账号或子账号应具备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包。

注意事项

  • 建议设置精准的前缀,同一个桶下的不同触发条件不能包含或重叠,触发条件指策略配置项中的事件、前缀以及后缀。

    例如,同一个桶下的两个解压策略event-0001和event-0002,假设event-0001的前缀配置为aa,则event-0002的前缀不可配置为aaaa,因为两者具有包含关系。

  • 当前缀置空时,解压策略将默认匹配该桶下的全部ZIP包,可能会触发循环执行。

    例如,ZIP包“AA.zip”中包含ZIP包“BB.zip”。如果前缀置空,当"AA.zip"解压完成后,系统会继续对解压出的"BB.zip"进行解压。设置前缀可以规避该问题。

  • 目标目录:ZIP包解压生成文件的存放目录,如果不设置,函数计算会将生成的文件存放到当前桶的主目录下。
  • 如果ZIP包中包含非UTF-8或GB 2312编码的文件名或文件夹(文件目录)名,可能导致解压生成文件的文件名或文件目录名出现乱码、解压过程中断等情况,请使用UTF-8或GB 2312编码命名您的文件或文件目录。
  • 上传归档存储的ZIP包,不会触发ZIP包解压,如果桶已开启归档数据直读功能,则可以触发ZIP包解压。上传深度归档存储的ZIP包,不会触发ZIP包解压。
  • ZIP包解压处理单个压缩包的最长处理时间是10分钟,超过10分钟未完成会解压失败。

使用方式

OBS支持通过控制台、API方式配置ZIP包在线解压。

支持的使用方式

参考文档

控制台

创建在线解压策略

API

设置在线解压策略