S3在上传时调整大小

时间:2018-01-18 03:48:29

标签: amazon-s3 lambda aws-lambda

当文件上传到我的S3存储桶时,我一直在尝试运行lambda函数。我所遵循的每个教程都使用了旧版本的UI(基本上所有内容都不同),因此完成起来非常复杂。

现在,我有这个:

Basic config I have on my Lambda console

我正在使用的功能是唯一包含单词“image”的模板。它使用ImageMagick库,据我所见,它包含调整图像大小的函数。

我注意到“处理程序”函数被调用,我不知道如何为它提供参数。正在调用该函数,但在检查“req.operation”时,它当然是未定义的。我在这里缺少什么?

有没有人有我可以遵循的更新网址来完成此操作或/和使用Lambda动态调整大小?

3 个答案:

答案 0 :(得分:2)

http://amazon.qwiklabs.com上的 AWS Lambda 自定进度实验室简介使用新的Lambda接口,但代码是Python。

AWS Using AWS Lambda with Amazon S3教程包含Node,Java和Python的代码,但通过AWS Command-Line Interface (CLI)创建了Lambda函数。

作为在上传时调整图片大小的替代方法,您可以使用调整大小服务来动态提供图像:

答案 1 :(得分:1)

他们的控制台在过去几个月中改变了很多次,所以如果你按照旧的教程,很容易混淆正在发生的事情。 首先尝试使用函数模板进行简单测试,以了解会发生什么。调用时,每个lambda都会转到带有事件和上下文参数的处理函数。

这里有一个使用lambda,s3和api网关动态调整图像大小的示例:https://github.com/awslabs/serverless-image-resizing,这是处理lambda上的大小调整的函数:https://github.com/awslabs/serverless-image-resizing/blob/master/lambda/index.js

答案 2 :(得分:0)

我在这个问题上遇到过official blog post/tutorial的类似问题。 (“2018年5月”更新日期位于该位置的顶部特别具有误导性,因为我认为它的主体在18个月内未经过实质性修订。)

但是,幸运的是,在AWS文档的其他地方,我找到了这个Serverless Image Handler指南。

它包含一个CloudFormation模板,它基本上为您设置了所有需要的资源(Cloudfront URL,Lambda函数和API网关)。一旦您将其指向源图像所在的S3存储桶,您就可以获得功能完备的设置。在某些情况下,这对于生产使用就足够了(除非您需要执行特定的访问限制)。

这个解决方案的一个很酷的事情是它使用Thumbor库,除了缩放之外,它还可以进行几十个其他图像转换(例如颜色调整,旋转)。