文档首页/ 函数工作流 FunctionGraph/ 最佳实践/ 数据处理类实践/ 使用FunctionGraph函数对OBS中的图片进行压缩
更新时间:2025-02-27 GMT+08:00
分享

使用FunctionGraph函数对OBS中的图片进行压缩

方案概述

本实践适用于将单张或批量的图片压缩处理。高质量图片文件通常占用大量存储空间和带宽,导致网站和应用的加载速度变慢,结合对象存储服务OBS,使用FunctionGraph函数可以构建一个高效的图片压缩解决方案,对存储在OBS桶中的图片进行自动压缩处理,实现存储空间优化与资源高效利用。

约束与限制

  • “OBS应用事件源”触发器目前仅支持“华北-北京四”“华北-乌兰察布一”“华东-上海一”区域,在创建函数和OBS桶时请选择上述区域之一。
  • 在操作过程中,所创建的函数和OBS桶必须位于同一个区域下。

资源和成本规划

表1介绍使用FunctionGraph函数对OBS中的图片进行压缩所需的资源和成本规划。

表1 资源和成本规划

资源

资源说明

计费说明

对象存储服务 OBS

  • 产品类型:对象储存
  • 区域:华北-北京四
  • 存储策略:单AZ存储
  • 存储类别:标准存储
  • 桶策略:私有
  • 购买量:2

函数工作流 FunctionGraph

  • 函数类型:事件函数
  • 区域:华北-北京四
  • 购买量:1
  • 计费模式:按需计费。
  • 函数工作流提供免费试用,每月前100万次调用免费。具体计费项及说明请参考函数工作流按需计费说明

操作流程

下表介绍使用FunctionGraph函数对OBS中的图片进行压缩的总体操作流程。

表2 操作流程

操作流程

说明

步骤一:创建两个OBS桶

创建两个OBS桶,源桶用于存储原始图片,目标桶用于存储压缩后图片。

步骤二:创建云服务委托

创建云服务委托,授权FunctionGraph使用其他云服务,确保能与OBS服务协同工作。

步骤三:创建图片压缩函数

创建空白函数,配置代码环境和创建OBS应用事件源触发器,以实现对OBS源桶中上传或更新的图片自动进行压缩。

步骤四:验证图片压缩

上传原始图片到OBS源桶,图片压缩函数自动执行,在OBS目标桶中生成压缩后的图片,验证图片压缩函数正常运行。

步骤一:创建两个OBS桶

  1. 登录对象存储服务控制台,进入“对象存储”页签。
  2. 单击“创建桶”,进入“创建桶”界面。
  3. “创建桶”界面,参考表3填写OBS源桶信息。

    表3 OBS源桶配置

    参数名称

    参数说明

    取值样例

    区域

    必选参数。

    桶所属区域。请选择靠近您业务的区域,以降低网络时延,提高访问速度。桶创建成功后,不支持变更区域。当前“OBS应用事件源”触发器仅支持“华北-北京四”“华北-乌兰察布一”“华东-上海一”区域。

    华北-北京四

    数据冗余存储策略

    必选参数。

    • 多AZ存储:数据冗余存储至多个可用区(AZ),可靠性更高。
    • 单AZ存储:数据仅存储在单个可用区(AZ),成本更低。
    • 桶创建成功后,不支持变更存储策略。

    单AZ存储

    桶名称

    必选参数。

    桶的名称。需全局唯一,桶创建成功后,不支持修改名称。

    your-bucket-input

    存储类别

    必选参数。

    • 标准存储:适用于有大量热点文件或小文件,且需要频繁访问(平均一个月多次)并快速获取数据的业务场景,支持单AZ存储和多AZ存储。
    • 低频访问存储:适用于不频繁访问(平均一年少于12次),但需要快速获取数据的业务场景,支持单AZ存储和多AZ存储。
    • 归档存储:适用于很少访问(平均一年一次),且对数据获取速率要求不高的业务场景,仅支持单AZ存储。

    标准存储

    桶策略

    必选参数。

    桶的读写权限控制。

    • 私有:除桶ACL授权外的其他用户无桶的访问权限。
    • 公共读:任何用户都可以对桶内对象进行读操作。
    • 公共读写:任何用户都可以对桶内对象进行读/写/删除操作。

    私有

    默认加密

    必选参数。

    服务器端加密是指OBS服务端对客户端上传到OBS的对象进行加密存储,开启后需要选择加密密钥。

    关闭

    归档数据直读

    必选参数。

    通过归档数据直读,可以直接下载存储类别为归档存储的数据,无需提前恢复。归档数据直读会收取相应的费用。

    关闭

    企业项目

    必选参数。

    企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,默认项目为default。

    default

    标签

    可选参数。

    标签用于标识OBS中的桶,以此达到对OBS中的桶进行分类的目的。

    保持默认,不填写。

  4. 重复步骤3,创建OBS目标桶。桶名称命名为“your-bucket-output”,其余参数信息与源桶保持一致。
  5. 完成桶创建后,桶列表有your-bucket-input、your-bucket-output两个桶。

步骤二:创建云服务委托

  1. 登录,左侧导航栏选择“委托”,进入“委托”页面后,右上角单击“创建委托”
  2. “创建委托”页面,配置如下参数:

    • 委托名称:输入“serverless_trust”。
    • 委托类型:选择“云服务”。
    • 云服务:选择“函数工作流 FunctionGraph”。
    • 持续时间:选择“永久”。
    • 描述:保持默认,无需填写。

  3. 单击“完成”,系统提示创建成功,单击“立即授权”,进入“授权”界面。
  4. “选择策略”界面搜索并勾选“OBS Administrator”,单击“下一步”

    图1 选择策略

  5. “设置最小授权范围”界面选择“所有资源”,单击“确定”

    “OBS Administrator”策略暂不支持指定区域项目资源。

  6. 系统提示授权成功,单击“完成”,回到“委托”列表,列表中出现“serverless_trust”委托则创建成功。

步骤三:创建图片压缩函数

  1. 登录函数工作流控制台,在左侧导航栏选择函数 > 函数列表,进入函数列表界面。
  2. 单击“创建函数”,进入创建函数界面。
  3. 选择“创建空白函数”,参考表4填写函数基本信息,填写完成后单击“创建函数”

    表4 配置函数参数

    参数名称

    参数说明

    取值样例

    函数类型

    必选参数。

    • 事件函数:通过触发器来触发函数执行。
    • HTTP函数:用户可以直接发送 HTTP 请求到 URL 触发函数执行。

    事件函数

    区域

    必选参数。

    代码部署的区域。需与OBS桶区域保持一致。

    华北-北京四

    项目

    必选参数。

    项目部署的区域。会根据区域默认选择。

    华北-北京四(默认)

    函数名称

    必选参数。

    函数的名称。可包含字母、数字、下划线和中划线,以大/小写字母开头,以字母或数字结尾,长度不超过60个字符。

    fss_examples_image_thumbnail

    企业项目

    必选参数。

    将函数添加至已创建的企业项目中,需与OBS桶的企业项目保持一致,默认项目为default。

    default

    委托名称

    可选参数,本实践必选。

    委托函数工作流服务访问其他云服务的委托名称。选择步骤二:创建云服务委托中创建的委托。

    serverless_trust

    运行时

    必选参数。

    编写函数的语言及其版本。控制台代码编辑器仅支持Node.js、Python和PHP语言。

    Python3.6

  4. 进入fss_examples_image_thumbnail函数详情页,配置如下信息。

    1. 下载示例代码fss_examples_image_thumbnail.zip
    2. “代码”页签,选择“上传自Zip文件”,添加下载的“fss_examples_image_thumbnail_eg.zip”文件,单击“确定”,代码自动部署。
    3. 单击页面最底部的“添加依赖包”,添加公共依赖包“pillow-7.1.2”,版本默认选择“1”,单击“确定”
    4. 设置 > 常规设置页签,修改如下配置。
      • 执行超时时间:输入“40”
      • 内存:选择“256”

      填写完成后单击“保存”

    5. 设置 > 环境变量页签,单击“编辑环境变量”,在弹出窗口中单击“添加环境变量”,添加表5信息,填写完成后单击“确定”
      表5 环境变量

      说明

      output_bucket

      your-bucket-output

      存储压缩图片的OBS目标桶名称。

      obs_endpoint

      obs.cn-north-4.myhuaweicloud.com

      华北-北京四区域的OBS服务终端节点(其他区域节点参考地区和终端节点)。

    6. 设置 > 触发器页签,单击“创建触发器”,弹出创建触发器界面,参考表6填写触发器基本信息,填写完成后单击“确定”
      表6 配置触发器参数

      参数名称

      参数说明

      取值样例

      触发器类型

      必选参数。

      本实践通过添加OBS应用事件源触发器,当对OBS桶执行操作时,将生成事件触发函数执行。

      OBS应用事件源

      触发器名称

      必选参数。

      触发器的名称。只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间。

      Image

      必选参数。

      选择已创建的OBS源桶,用于存储原始图片。

      your-bucket-input

      事件类型

      必选参数。

      触发事件的类型,本实践通过上传或更新桶对象触发函数执行。

      “通过页面或Put请求创建或覆盖桶对象。”、“使用Post请求创建或覆盖桶对象。”

      对象名前缀

      可选参数。

      用来限制以此关键字开头的对象的事件通知,该限制可以实现对OBS对象名的过滤。

      保持默认,不填写。

      对象名后缀

      可选参数。

      用来限制以此关键字结尾的对象的事件通知,该限制可以实现对OBS对象名的过滤。

      保持默认,不填写。

      对象名编码

      必选参数。

      选择是否对对象名进行编码。

      默认开启。

步骤四:验证图片压缩

  1. 进入对象存储服务控制台,单击“your-bucket-input”桶,进入“对象”页签。
  2. 单击“上传对象”,储存类别选择“标准存储”,添加待压缩图片后单击“上传”,上传成功后如图2所示。

    图2 上传图片

  3. 进入“your-bucket-output”桶对象界面,查看压缩后的图片大小。

    图3 压缩图片

    为避免产生不必要的存储费用,完成本次体验后,依据实际使用需求,可删除两个OBS桶中存储的图片。请注意,删除后无法恢复,请谨慎操作。

相关文档