搜索本产品文档关键词
zip打包压缩
所有文档
menu
没有找到结果,请重新输入

对象存储 BOS

zip打包压缩

简介

ZIP 多文件打包压缩是百度智能云对象存储(Baidu Object Storage,BOS)基于 函数计算(Cloud Function Compute) 为用户提供的数据处理解决方案。用户为存储桶添加多文件打包压缩规则后,指定需要打包压缩文件的 URLs,再通过触发 CFC 函数来执行打包压缩的动作,并将最终的压缩包投递至存储桶的指定路径下。

注意事项

  • ZIP 多文件打包压缩最终生成的压缩包不能大于50GB。
  • 若您此前在对象存储控制台上为存储桶添加了 ZIP 多文件打包压缩规则,可以在 云函数控制台 上看到您所创建的 ZIP 多文件打包缩函数,请不要删除该函数,否则可能导致您的规则不生效。
  • 如果在打包压缩的过程中出现报错,您可以单击所创建的函数右侧的查看日志,跳转到云函数控制台查看日志错误详情。
  • 归档存储文件需要先解冻取回后才能打包压缩,若未解冻则打包失败。如您需要打包压缩此类型的对象,请先取回后再进行。
  • 仅CFC支持地域可使用该功能。目前暂支持:华北-北京、华南-广州、华东-苏州地域,函数可基于以上地域创建。

操作步骤

  • 在控制台开始使用文件打包压缩功能之前,您需要开通CFC服务,才可创建文件打包压缩规则。
  • 用户也可以在 云函数控制台 上自行创建函数调用使用。

在控制台使用多文件打包压缩功能的步骤如下所示:

  1. 打开百度智能云控制台,进入BOS控制界面。
  2. 在左侧导航栏中,点击【数据魔方】,选择【扩展功能】,即可使用多文件ZIP打包压缩功能,未开通CFC服务的用户按指引开通后即可使用。
  3. 点击【立即配置】进入打包函数配置界面,点击左上角【创建函数】新建打包函数,输入函数名称、选择地域、勾选CFC授权后点击【确认】即可完成新建函数操作。

image.png

image.png

  1. 在函数列表中选择你想要调用的函数,点击操作栏中的【调用】进入函数配置界面。各参数解释见下方多文件压缩参数解释
  2. 配置完函数各参数后,点击【开始调用】即可执行该函数,您可在响应结果中查看调用完成后的相关信息。
  3. 为了您更好的查询、分析函数执行,您可在函数列表操作栏中的【查看日志】对函数配置日志存储,配置日志存储后可查看函数的日志信息。

image.png

image.png

image.png

多文件压缩参数解释

函数参数配置示例

实际使用当中,需将代码中的注释去掉。

{
    "bucket": "examplebucket",          // 最终投递 ZIP 文件的存储桶
    "region": "bj",                     // 最终投递 ZIP 文件的存储桶所在地域
    "endpoint":"https://bj.bcebos.com", // 最终投递 ZIP 文件的存储桶对外服务的访问域名
    "key": "test.zip",                  // 最终投递 ZIP 文件的名称
    "flatten": false,                   // 是否需要对源文件路径进行扁平化处理

    /**
     * sourceList 用于指定需打包的源文件列表,格式为 JSON 数组
     * 每一项包含源文件 url,重命名的路径 renamePath 等
     * 
     */
    "sourceList": [
        {
            "url": "https://bucket.bj.bcebos.com/dir1/file1.jpg",
            "renamePath": "dir1_rename/file1.jpg"
        },
        {
            "url": "https://bucket.bj.bcebos.com/dir2/file2.mp4",
            "renamePath": "file2.mp4"
        },
        {
            "url": "https://bucket.bj.bcebos.com/file3.md"
        }
    ]
}

参数说明如下:

参数名 参数描述 类型 是否必填
bucket 最终投递 ZIP 文件的存储桶,命名格式为 BucketName,例如:examplebucket String
region 最终投递 ZIP 文件的存储桶所在地域,枚举值请参见 区域选择说明 String
endpoint 最终投递 ZIP 文件的存储桶的对外访问域名,枚举值请参见 区域选择说明 String
key 最终投递 ZIP 文件的名称(Object 的名称),对象在存储桶中的唯一标识, String
flatten 是否需要路径扁平化(去除源目录结构),例如:源文件 URL 为 https://domain/source/test.mp4, 则源文件路径为 source/test.mp4,如果为 true,则 ZIP 包中该文件路径为 test.mp4,否则 ZIP 包中该文件路径为 source/test.mp4。默认为 false Boolean
sourceList 源文件列表,sourceList Array
sourceList[].url 源文件的 URL String
sourceList[].renamePath 带路径的重命名,即源文件在 ZIP 包中的文件路径。例如,将 dir1/file1.jpg 重命名为 dir1_rename/file1.jpg。
注意:renamePath 的优先级高于 flatten,重命名后的路径不受扁平化影响
String

函数响应结果示例

同步调用结果示例:

{
    "Code": 0,
    "Message": "zip success!",
    "Data": {
        "Bucket": "<bucket_name>",
        "Key": "package1.zip",
        "Location": "http://bj.bcebos.com/<bucket_name>/package1.zip",
        "Etag": "-cf3cac621791214721d845becc3e9906"
    },
    "Error": null
}

响应参数说明如下:

参数名 参数描述 类型
Code 业务错误码,如果为 0 则说明执行成功,否则为执行失败 Number
Message 执行结果的文字说明,可能为 null String
Data 执行成功的信息,如果执行成功,则包含 ZIP 包的 url 信息 Object
Error 执行的错误信息,如执行成功则为 null Object or String

异步调用结果返回202,具体执行日志见函数配置的日志路径

调用压缩函数

  • 文件压缩需借助函数计算(CFC) 实现,您需主动调用触发。
  • 若需批量打包推荐您使用SDK更加便捷。
  1. 您可前往SDK概览查看各语言安装SDK的指引文档,并根据文档安装对应的SDK。
  2. 安装SDK后,可以通过SDK调用CFC的调用函数接口(invocations)从而触发对应的云函数,具体参数见函数调用接口

实际案例

案例一:简单案例

参数配置

{
  "bucket": "<bucket_name>",
  "region": "bj",
  "endpoint":"https://bj.bcebos.com",
  "key": "mypack.zip",
  "flatten": false,
  "sourceList": [
      {
          "url": "https://<bucket_name>.bj.bcebos.com/dir1/file1.jpg"
      },
      {
          "url": "https://<bucket_name>.bj.bcebos.com/dir2/file2.mp4"
      },
      {
          "url": "https://<bucket_name>.bj.bcebos.com/file3.md"
      }
  ]
}

最终 ZIP 压缩包结构

mypack.zip
    ├── dir1/file1.jpg
    ├── dir2/file2.mp4
    └── file3.md

案例二:源文件路径扁平化

参数配置

{
  "bucket": "<bucket_name>",
  "region": "bj",
  "endpoint":"https://bj.bcebos.com",
  "key": "mypack.zip",
  "flatten": true,                  // flatten 为 true,对源文件路径进行扁平化处理
  "sourceList": [
      {
          "url": "<bucket_name>.bj.bcebos.com/dir1/file1.jpg"
      },
      {
          "url": "<bucket_name>.bj.bcebos.com/dir2/file2.mp4"
      },
      {
          "url": "<bucket_name>.bj.bcebos.com/file3.md"
      }
  ]
}

最终 ZIP 压缩包结构

mypack.zip
    ├── file1.jpg
    ├── file2.mp4
    └── file3.md

案例三:源文件路径重命名

参数配置

{
  "bucket": "<bucket_name>",
  "region": "bj",
  "endpoint":"https://bj.bcebos.com",
  "key": "mypack.zip",
  "flatten": false,
  "sourceList": [
      {
          "url": "https://<bucket_name>.bj.bcebos.com/dir1/file1.jpg",
          // 将 dir1/file1.jpg 路径重命名为 dir1_rename/file1.jpg
          "renamePath": "dir1_rename/file1.jpg"
      },
      {
          "url": "https://<bucket_name>.bj.bcebos.com/dir2/file2.mp4",
          // 将 dir2/file2.mp4 重命名为 file2.mp4
          "renamePath": "file2.mp4"
      },
      {
          "url": "https://<bucket_name>.bj.bcebos.com/file3.md"
      }
  ]
}

最终 ZIP 压缩包结构

mypack.zip
    ├── dir1_rename/file1.jpg
    ├── file2.mp4
    └── file3.md

案例四:源文件路径重命名 + 扁平化

参数配置

{
  "bucket": "<bucket_name>",
  "region": "bj",
  "endpoint":"https://bj.bcebos.com",
  "key": "mypack.zip",
  "flatten": true,         // flatten 为 true,对源文件路径进行扁平化处理
  "sourceList": [
      {
          "url": "https://<bucket_name>.bj.bcebos.com/dir1/file1.jpg"
      },
      {
          "url": "https://<bucket_name>.bj.bcebos.com/dir2/file2.mp4"
      },
      {
          "url": "https://<bucket_name>.bj.bcebos.com/file3.md",
          // 将 file3.md 重命名为 dir3/file3.md,renamePath 优先级比 flatten 高,因此重命名后的路径不会被扁平化
          "renamePath": "dir3/file3.md"
      }
  ]
}

最终 ZIP 压缩包结构

mypack.zip
    ├── file1.jpg
    ├── file2.mp4
    └── dir3/file3.md
上一篇
批量处理
下一篇
内容审核