用户的需求是我上传一张照片可以自动生成缩略图。在需要get到原图的时候再下载原图。
一般网盘或图片浏览的常规操作。通常需要再客户端植入代码或在云端处理。这里可以使用FaaS,函数即服务的方式来缩短我们开发周期,节约成本。

架构:

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

1.创建两个S3 的存储桶

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

将图片上传到images-120080212

2.创建一个Lambda函数

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

想要Lambda代码直接@我留言吧,大概9MiB。用Python写的。把代码直接放到λ函数里再跟进下面的操作就可以直接RUN了。

最终执行的py脚本为:CreateThumbnail.py
所以处理程序为:CreateThumbnail.handler

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

测试函数,选择测试。

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

回到S3的resized的bucket上:

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

监控我的应用程序:

[AWS][Serverless] 无服务器Serverless 图像缩略图应用

统计单位 是 个数和时长

Invocations:被调用了多少次
Duration:函数执行时长(ms)
Error:函数执行失败了多少次
Throlttes:并行超过限制将不再执行的函数个数,默认是1000并行。
IteratorAge:迭代时长,测量从流触发器处理的最后一个记录的时长。
也就是这个函数处理最后一个数据流所用的时长(Kinesis Stream or DDB Stream)
DeadLetterErrors:发生失败时发送死信队列所用时长。

嗯。就先写这些吧。Serverless应用在云计算中已经越来越普及了。以后的应用架构中,随着容器编排和Serverless技术的扩展,应用逐渐解耦为函数级别,在一些特定场景中Serverless能够快速、低成本的完成高并发任务。