我刚刚完成此操作,会根据请求调整存储在s3上的图片的大小,并且它可以作为魅力:https://aws.amazon.com/tw/blogs/compute/resize-images-on-the-fly-with-amazon-s3-aws-lambda-and-amazon-api-gateway/
我刚刚开始阅读Lambda Edge的文章:http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html
但我仍然不确定我应该如何处理事件:查看者请求,原始请求,原始响应和查看者响应。
我现在使用的带有网关触发器的lambda函数是https://github.com/awslabs/serverless-image-resizing
答案 0 :(得分:1)
Lambda @ Edge目前还不适合图像大小调整。它适用于更轻量级的任务,例如标题操作和基于文本的小型响应生成。
在Lambda @ Edge中,部署zip文件限制为1 MiB,容器内存限制为128 MiB,查看器端的运行时间限制为1秒,原始端限制为3秒,尽管可用CPU容量未明确公布,它是1个现代2.3-2.4 GHz Xeon核心容量的一小部分。它对于亚毫秒标题重写是足够的,但不是图像大小调整。
现在Lambda @ Edge能够检查查询字符串,可以想象你可以使用它而不是API网关来调用实际调整大小的第二个Lambda函数(从Lambda调用Lambda)然后将API网关格式的响应转换为CloudFront格式,因此每次调用的成本可能会更低(因为Lambda @ Edge请求的成本低于API网关请求)...但它不是直接替代API Gateway + Lambda在已建立的示例中正在执行的操作。您可以使用Origin Request触发器执行此操作。
Lambda @ Edge也无法返回生成的二进制内容(仅限UTF-8字符内容),但这与实现的调整大小示例没有直接关系,因为重定向用于将浏览器发送到新目标对象
它非常有用,但不完全等同于API Gateway + Lambda。
答案 1 :(得分:1)
截至2017年12月,AWS Lambda Limits的内存分配最大值为3008 MB,每个请求的最长执行时间为300秒。实际上Step 2.1: Create a Deployment Package甚至使用了图像大小调整的例子。
AWS Lambda@Edge对事件有最好的描述,包括图表。我想您想使用Origin Request事件,因此可以缓存您的响应。另外,请查看AWS re:invent 2017: Building Serverless Websites with Lambda@Edge (CTD309) - YouTube 以获取完整说明。
答案 2 :(得分:0)
现在,Lambda @ edge已经支持数十MB的zip软件包。因此,我们可以将Sharp库打包到其中,以支持我们对图像的常规处理。
我写了一个最佳实践。 https://github.com/foamzou/aws-lambda-edge-image-process
使用它,用户只需要添加一些参数即可获取处理后的图片。例如,将jpg图片转换为宽度为500px,质量为50%的webp图片:https://your-cdn/image.jpg@500w_50q.webp