功能介绍
将图片上传到特定的OBS桶中,然后对上传的每个图片打水印,将处理完后的图像上传到另一个指定的OBS桶中。
准备工作
1.创建函数及添加事件源之前,需要创建两个OBS桶,分别用来保存用户上传的图片和打水印后输出的图片。
2.OBS桶创建以后,需要创建委托,给FunctionGraph函数赋权,确保FunctionGraph函数能够访问到OBS资源。
创建OBS桶
注意事项
1.上传图片的源桶、输出图片的目标桶和函数必须处于同一个区域下,在本教程中,都处于“华北-北京一”(也是服务的默认区域)。
2.必须使用两个不同的桶。如果使用一个桶,会无限执行函数。(源桶上传图片会触发函数执行,从而无限循环)。
操作步骤
1.登录对象存储服务控制台,单击“创建桶”,进入“创建桶”界面。
2.在“创建桶”界面,填写存储桶信息,如图1所示:
- 区域:根据实际情况设置
- 桶名称输入:“hugb-bucket-input”
- 存储别选择:“标准存储”
- 桶策略选择:"私有"
- 单击“立即创建”,完成源桶创建。
图1 创建源桶
![]()
3.重复步骤2,创建目标桶。
区域及存储类别与源桶保持一致,桶名称命名为“hugb-bucket-output”。
4.完成桶创建以后,OBS桶列表有以下两个桶,如图2所示。
图2 桶列表

创建委托
1.登录统一身份认证服务控制台,在左侧导航栏单击“委托”,进入“委托”界面。
2.单击“创建委托”,进入“创建委托”界面。
3.填写委托信息。
- 委托名称:输入“serverless_trust”。
- 委托类型:选择“云服务”。
- 云服务:选择“函数工作流 FunctionGraph”。
- 持续时间:选择“永久”。
- 权限选择:单击“配置权限”,在“配置权限”界面勾选“Tenant Administrator”,单击“确定”。
图3 创建委托
![]()
说明
:Tenant Administrator:拥有该权限的用户可以对企业拥有的所有云资源执行任意操作。
4.单击“确定”,完成权限委托设置。
构建程序
创建程序包
本例使用Python语言实现为图片打水印的功能,有关函数开发的过程请参考Python函数开发。本例不再介绍业务功能实现的代码,样例代码目录如图4所示。
图4 样例代码目录
![]()
其中index.py为函数执行的入口文件,index.py中入口函数的代码片段如下,参数“obs_output_bucket”为打水印后的图片存储地址,需要在创建函数时配置自定义参数。
Copied!
def handler(event, context):
srcBucket, srcObjName = getObjInfoFromObsEvent(event)
outputBucket = context.getUserData('obs_output_bucket')
client = newObsClient(context)
# download file uploaded by user from obs
localFile = "/tmp/" + srcObjName
downloadFile(client, srcBucket, srcObjName, localFile)
outFileName, outFile = watermark_image(localFile, srcObjName)
# 将转换后的文件上传到新的obs桶中
uploadFileToObs(client, outputBucket, outFileName, outFile)
return 'OK'
创建函数
创建函数的时候,必须选择委托包含OBS访问权限的委托,否则不能使用OBS服务。
1.登录函数工作流控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数列表界面。
2.单击“创建函数”,进入创建函数流程。
3.填写函数配置信息
a.输入基础配置信息,如图5所示。
- 函数名称输入:“fss_examples_image_watermark”
- 所属应用选择默认的“default”。
- 描述输入:“图片打水印”
- 委托名称选择创建委托中创建的“serverless_trust”
图5 基础配置
![]()
b.输入代码信息,如图6所示。
- 运行时语言选择:“Python2.7”
- 函数执行入口输入:“index.handler”
- 代码选择“上传ZIP文件”,上传样例代码中的“fss_examples_image_watermark.zip”
图6 代码配置
![]()
c.单击右侧“创建函数”,完成函数创建。
4.进入fss_examples_image_watermark函数详情页,进入“代码”页签,添加“pillow-6.2.2”依赖包。
![]()
5.进入fss_examples_image_watermark函数详情页,在“配置”页签,输入环境信息,如图7所示。
- 内存选择:“128”
- 超时时间输入:“3”
- 设置环境变量,键obs_output_bucket为index.py文件中定义的存放输出水印图片的OBS桶参数,值hugb-bucket-output为创建OBS桶中创建的存放输出水印图片的OBS桶。
图7 环境配置
![]()
6.单击页面右上角“保存”,保存配置信息。
添加事件源
OBS桶及函数创建以后,可以为函数添加事件源,添加OBS事件源是通过创建OBS触发器实现的,步骤如下。
1.用户进入fss_examples_image_watermark函数详情页,在“触发器”页签,单击“创建触发器”,弹出“创建触 发器”界面。
2.触发器类型选择“存储(OBS)”,填写触发器配置信息,如图8所示。
- 桶选择创建OBS桶中创建的“hugb-bucket-input”桶。
- 事件选择“Post”、“Put”。
图8 创建触发器
![]()
3.单击"确定",完成触发器创建,如图9所示。
图9 OBS触发器
![]()
说明
:OBS触发器创建以后,当有图片上传或更新至hugb-bucket-input桶时,生成事件,触发函数执行。
图片处理
当图片上传后更新至hugb-bucket-input桶时,会生成事件,触发函数运行,将上传图片打水印,保存在hugb-bucket-output中。
上传图片生成事件
登录对象存储服务控制台,进入hugb-bucket-input桶对象界面,上传image.jpg图片,如图10所示。
图10 上传图片
![]()
触发函数自动运行
上传图片至hugb-bucket-input桶,OBS生成事件触发函数运行,为图片打水印,输出图片存放在hugb-bucket-output桶中。可以在fss_examples_image_watermark函数详情页“日志”页签查看函数运行日志,如图11所示。
图11 日志
![]()
进入hugb-bucket-output桶对象界面,可以看到输出的图片image-watermark.jpg,如图12所示。单击操作列的“下载”可将图片下载至本地查看图片处理效果,效果如图13所示。
图12 输出图片
![]()
图13 效果图
![]()
功能介绍
将图片上传到特定的OBS桶中,然后对上传的每个图片打水印,将处理完后的图像上传到另一个指定的OBS桶中。
准备工作
1.创建函数及添加事件源之前,需要创建两个OBS桶,分别用来保存用户上传的图片和打水印后输出的图片。
2.OBS桶创建以后,需要创建委托,给FunctionGraph函数赋权,确保FunctionGraph函数能够访问到OBS资源。
创建OBS桶
注意事项
1.上传图片的源桶、输出图片的目标桶和函数必须处于同一个区域下,在本教程中,都处于“华北-北京一”(也是服务的默认区域)。
2.必须使用两个不同的桶。如果使用一个桶,会无限执行函数。(源桶上传图片会触发函数执行,从而无限循环)。
操作步骤
1.登录对象存储服务控制台,单击“创建桶”,进入“创建桶”界面。
2.在“创建桶”界面,填写存储桶信息,如图1所示:
图1 创建源桶
3.重复步骤2,创建目标桶。

区域及存储类别与源桶保持一致,桶名称命名为“hugb-bucket-output”。
4.完成桶创建以后,OBS桶列表有以下两个桶,如图2所示。
图2 桶列表
创建委托
1.登录统一身份认证服务控制台,在左侧导航栏单击“委托”,进入“委托”界面。
2.单击“创建委托”,进入“创建委托”界面。
3.填写委托信息。
图3 创建委托
说明
:Tenant Administrator:拥有该权限的用户可以对企业拥有的所有云资源执行任意操作。4.单击“确定”,完成权限委托设置。
构建程序
创建程序包
本例使用Python语言实现为图片打水印的功能,有关函数开发的过程请参考Python函数开发。本例不再介绍业务功能实现的代码,样例代码目录如图4所示。
![]()
图4 样例代码目录
其中index.py为函数执行的入口文件,index.py中入口函数的代码片段如下,参数“obs_output_bucket”为打水印后的图片存储地址,需要在创建函数时配置自定义参数。
创建函数
创建函数的时候,必须选择委托包含OBS访问权限的委托,否则不能使用OBS服务。
1.登录函数工作流控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数列表界面。
2.单击“创建函数”,进入创建函数流程。
3.填写函数配置信息
a.输入基础配置信息,如图5所示。
图5 基础配置
b.输入代码信息,如图6所示。
图6 代码配置
c.单击右侧“创建函数”,完成函数创建。
![]()
4.进入fss_examples_image_watermark函数详情页,进入“代码”页签,添加“pillow-6.2.2”依赖包。
5.进入fss_examples_image_watermark函数详情页,在“配置”页签,输入环境信息,如图7所示。
图7 环境配置
6.单击页面右上角“保存”,保存配置信息。
添加事件源
OBS桶及函数创建以后,可以为函数添加事件源,添加OBS事件源是通过创建OBS触发器实现的,步骤如下。
1.用户进入fss_examples_image_watermark函数详情页,在“触发器”页签,单击“创建触发器”,弹出“创建触 发器”界面。
2.触发器类型选择“存储(OBS)”,填写触发器配置信息,如图8所示。
图8 创建触发器
3.单击"确定",完成触发器创建,如图9所示。
![]()
图9 OBS触发器
说明
:OBS触发器创建以后,当有图片上传或更新至hugb-bucket-input桶时,生成事件,触发函数执行。图片处理
当图片上传后更新至hugb-bucket-input桶时,会生成事件,触发函数运行,将上传图片打水印,保存在hugb-bucket-output中。
上传图片生成事件
登录对象存储服务控制台,进入hugb-bucket-input桶对象界面,上传image.jpg图片,如图10所示。
![]()
图10 上传图片
触发函数自动运行
上传图片至hugb-bucket-input桶,OBS生成事件触发函数运行,为图片打水印,输出图片存放在hugb-bucket-output桶中。可以在fss_examples_image_watermark函数详情页“日志”页签查看函数运行日志,如图11所示。
![]()
图11 日志
进入hugb-bucket-output桶对象界面,可以看到输出的图片image-watermark.jpg,如图12所示。单击操作列的“下载”可将图片下载至本地查看图片处理效果,效果如图13所示。
![]()
图12 输出图片
图13 效果图
![]()
参考
更多信息请参考函数工作流 FunctionGraph。