- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
-
最佳实践
- FunctionGraph最佳实践汇总
-
数据处理类实践
- 使用FunctionGraph函数对OBS中的图片进行压缩
- 使用FunctionGraph函数为OBS中的图片打水印
- 使用FunctionGraph函数对DIS数据进行格式转换并存储到CloudTable
- 使用FunctionGraph函数实现通过API方式上传文件
- 使用FunctionGraph函数对IoTDA中的设备坐标数据进行转换
- 使用FunctionGraph函数对OBS中的文件进行加解密
- 使用FunctionGraph函数识别LTS中的异常业务日志并存储到OBS
- 使用FunctionGraph函数对LTS中的日志进行实时过滤
- 使用FunctionGraph函数流对OBS中的图片进行旋转
- 使用FunctionGraph函数流对图片进行压缩和打水印
- 功能应用类实践
- 函数构建类实践
- 开发指南
- API参考
- SDK参考
- 场景代码示例
-
常见问题
-
产品咨询
- 使用FunctionGraph是否需要开通计算、存储、网络等服务?
- 使用FunctionGraph开发程序之后是否需要部署?
- FunctionGraph为函数分配的磁盘空间有多少?
- 是否支持在函数中启动TCP的监听端口,通过EIP接收外部发送过来的TCP请求?
- 函数发起HTTP请求的源地址如何获取?
- FunctionGraph是否支持对上传的zip文件进行反编译?
- FunctionGraph的函数是否支持功能扩展?
- FunctionGraph中的代码是如何隔离的?
- 函数常规信息中的“应用”如何理解?
- 用户需要为函数的冷启动时间付费吗?
- 函数计费中的调用次数,是某一账号下在不同region的所有函数的调用次数总和吗?
- Python语言的函数从V1版本迁移到V2版本时需注意哪些兼容性问题?
- FunctionGraph函数支持哪些编程语言?
- 创建函数
-
配置函数
- 能否在函数环境变量中存储敏感信息?
- FunctionGraph的函数如何读写上传的文件?
- 为函数挂载文件系统时,报“failed to mount exist system path”
- FunctionGraph如何实现域名解析?
- FunctionGraph如何通过域名访问专享版APIG中注册的接口?
- FunctionGraph函数通过域名访问APIG中注册的接口时,报域名无法解析?
- 使用定制运行时语言的函数能操作哪些目录?
- FunctionGraph的函数支持哪些中文字体?
- 能否在函数代码中使用线程和进程?
- 函数如何访问MySQL数据库?
- 函数无法通过VPC连接对应的Redis?
- 如何读取函数的请求头?
- Python语言的函数中,中文注释报乱码错误
-
调用函数
- FunctionGraph的函数执行需要多长时间?
- FunctionGraph的函数执行包含了哪些过程?
- FunctionGraph函数长时间不执行时,相关的实例会如何处理?
- 如何获取函数运行过程中的内存使用量信息?
- 为什么首次调用函数时速度会比较慢?
- 为什么函数实际使用内存大于预估内存,甚至触发内存溢出OOM?
- 函数执行失败返回“runtime memory limit exceeded”时,如何查看内存占用大小?
- 自定义镜像函数执行失败报“CrashLoopBackOff”
- 同步调用函数时,未收到调用响应的可能原因?
- 函数中os.system("command &")命令的执行日志未采集,应如何处理?
- 函数执行超时的可能原因有哪些?
- 使用APIG触发器调用一个返回String的FunctionGraph函数时,报500错误
- Python2.7在执行reload(sys)后无法通过print打印日志
- 运行函数时报错error while loading shared libraries时如何处理?
- 配置触发器
- 配置依赖包
-
产品咨询
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
使用FunctionGraph函数对OBS中的图片进行压缩
方案概述
本实践适用于将单张或批量的图片压缩处理。高质量图片文件通常占用大量存储空间和带宽,导致网站和应用的加载速度变慢,结合对象存储服务OBS,使用FunctionGraph函数可以构建一个高效的图片压缩解决方案,对存储在OBS桶中的图片进行自动压缩处理,实现存储空间优化与资源高效利用。
约束与限制
- “OBS应用事件源”触发器目前仅支持“华北-北京四”、“华北-乌兰察布一”、“华东-上海一”区域,在创建函数和OBS桶时请选择上述区域之一。
- 在操作过程中,所创建的函数和OBS桶必须位于同一个区域下。
资源和成本规划
表1介绍使用FunctionGraph函数对OBS中的图片进行压缩所需的资源和成本规划。
资源 |
资源说明 |
计费说明 |
---|---|---|
对象存储服务 OBS |
|
|
函数工作流 FunctionGraph |
|
|
操作流程
下表介绍使用FunctionGraph函数对OBS中的图片进行压缩的总体操作流程。
操作流程 |
说明 |
---|---|
创建两个OBS桶,源桶用于存储原始图片,目标桶用于存储压缩后图片。 |
|
创建云服务委托,授权FunctionGraph使用其他云服务,确保能与OBS服务协同工作。 |
|
创建空白函数,配置代码环境和创建OBS应用事件源触发器,以实现对OBS源桶中上传或更新的图片自动进行压缩。 |
|
上传原始图片到OBS源桶,图片压缩函数自动执行,在OBS目标桶中生成压缩后的图片,验证图片压缩函数正常运行。 |
步骤一:创建两个OBS桶
- 登录对象存储服务控制台,进入“对象存储”页签。
- 单击“创建桶”,进入“创建桶”界面。
- 在“创建桶”界面,参考表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中的桶进行分类的目的。
保持默认,不填写。
- 重复步骤3,创建OBS目标桶。桶名称命名为“your-bucket-output”,其余参数信息与源桶保持一致。
- 完成桶创建后,桶列表有your-bucket-input、your-bucket-output两个桶。
步骤二:创建云服务委托
- 登录,左侧导航栏选择“委托”,进入“委托”页面后,右上角单击“创建委托”。
- 在“创建委托”页面,配置如下参数:
- 委托名称:输入“serverless_trust”。
- 委托类型:选择“云服务”。
- 云服务:选择“函数工作流 FunctionGraph”。
- 持续时间:选择“永久”。
- 描述:保持默认,无需填写。
- 单击“完成”,系统提示创建成功,单击“立即授权”,进入“授权”界面。
- 在“选择策略”界面搜索并勾选“OBS Administrator”,单击“下一步”。
图1 选择策略
- 在“设置最小授权范围”界面选择“所有资源”,单击“确定”。
说明:
“OBS Administrator”策略暂不支持指定区域项目资源。
- 系统提示授权成功,单击“完成”,回到“委托”列表,列表中出现“serverless_trust”委托则创建成功。
步骤三:创建图片压缩函数
- 登录函数工作流控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数列表界面。
- 单击“创建函数”,进入创建函数界面。
- 选择“创建空白函数”,参考表4填写函数基本信息,填写完成后单击“创建函数”。
表4 配置函数参数 参数名称
参数说明
取值样例
函数类型
必选参数。
- 事件函数:通过触发器来触发函数执行。
- HTTP函数:用户可以直接发送 HTTP 请求到 URL 触发函数执行。
事件函数
区域
必选参数。
代码部署的区域。需与OBS桶区域保持一致。
华北-北京四
项目
必选参数。
项目部署的区域。会根据区域默认选择。
华北-北京四(默认)
函数名称
必选参数。
函数的名称。可包含字母、数字、下划线和中划线,以大/小写字母开头,以字母或数字结尾,长度不超过60个字符。
fss_examples_image_thumbnail
企业项目
必选参数。
将函数添加至已创建的企业项目中,需与OBS桶的企业项目保持一致,默认项目为default。
default
委托名称
可选参数,本实践必选。
委托函数工作流服务访问其他云服务的委托名称。选择步骤二:创建云服务委托中创建的委托。
serverless_trust
运行时
必选参数。
编写函数的语言及其版本。控制台代码编辑器仅支持Node.js、Python和PHP语言。
Python3.6
- 进入fss_examples_image_thumbnail函数详情页,配置如下信息。
- 下载示例代码 fss_examples_image_thumbnail_eg.zip。
- 在“代码”页签,选择“上传自Zip文件”,添加下载的“fss_examples_image_thumbnail_eg.zip”文件,单击“确定”,代码自动部署。
- 单击页面最底部的“添加依赖包”,添加公共依赖包“pillow-7.1.2”,版本默认选择“1”,单击“确定”。
- 在“设置 > 常规设置”页签,修改如下配置。
- 执行超时时间:输入“40”。
- 内存:选择“256”。
填写完成后单击“保存”。
- 在“设置 > 环境变量”页签,单击“编辑环境变量”,在弹出窗口中单击“添加环境变量”,添加表5信息,填写完成后单击“确定”。
表5 环境变量 键
值
说明
output_bucket
your-bucket-output
存储压缩图片的OBS目标桶名称。
obs_endpoint
obs.cn-north-4.myhuaweicloud.com
华北-北京四区域的OBS服务终端节点(其他区域节点参考地区和终端节点)。
- 在“设置 > 触发器”页签,单击“创建触发器”,弹出创建触发器界面,参考表6填写触发器基本信息,填写完成后单击“确定”。
表6 配置触发器参数 参数名称
参数说明
取值样例
触发器类型
必选参数。
本实践通过添加OBS应用事件源触发器,当对OBS桶执行操作时,将生成事件触发函数执行。
OBS应用事件源
触发器名称
必选参数。
触发器的名称。只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间。
Image
桶
必选参数。
选择已创建的OBS源桶,用于存储原始图片。
your-bucket-input
事件类型
必选参数。
触发事件的类型,本实践通过上传或更新桶对象触发函数执行。
“通过页面或Put请求创建或覆盖桶对象。”、“使用Post请求创建或覆盖桶对象。”
对象名前缀
可选参数。
用来限制以此关键字开头的对象的事件通知,该限制可以实现对OBS对象名的过滤。
保持默认,不填写。
对象名后缀
可选参数。
用来限制以此关键字结尾的对象的事件通知,该限制可以实现对OBS对象名的过滤。
保持默认,不填写。
对象名编码
必选参数。
选择是否对对象名进行编码。
默认开启。