AWS lambda实现s3图片资源数据万象
00x1 什么是数据万象
前端可通过原有的cdn链接后添加相应的图片操作参数即可实现动态的进行图片资源操作(图片缩放,裁剪,质量缩放,水印,文件类型转换)
eg: https://www.greatwei.com/1.png => https://www.greatwei.com/1.png@200h_300w_20x20x100x100c.jpg
这样的链接即可获取1.png 高200, 宽300, 左上角20,20位置开始裁剪裁剪100x100大小的图片,并且图片类型转换成jpg的图片
00x2 如何实现
Cdn请求过程
如图,cdn请求过程存在四条链路,我们可以根据自己的需求在指定路径挂载lambda函数触发,本次方案采用的是在路径3设置图片处理函数(aws支持nodejs, go, python来实现函数), 基本过程,路径3接收获取资源失败的相关信息,解析文件路径获取原图,进行图片资源操作,将处理后的数据同步返回cdn,异步上传处理后的图片到s3
注意点
(1) 处理后图片返回cdn,应该设置reponse Etag,使用http的缓存策略
(2) 异步上传到s3需要给资源打上tag,并且在aws管理后台设置tag的声明周期,防止资源占用,需要进行删除,只需要保留原图
(3) @200h_300w_20x20x100x100c.jpg 参数容易被恶意修改,导致s3产生大量资源内容,可以将改规则进行对称加密防止用户发现规则,或者给资源进行sign计算,虽然图片资源比例暴露,但是用户无法进行修改
(4) 资源过大的图片可以进行忽略,通过资源meta信息判断文件大小,超过指定大小跳过处理
00x3 优化空间
(1) 大文件处理
(2) 图片处理速度
赏
请到客户端“主题--自定义配置--配置”中填入leancloud_appID和key