sou*_*976 9 image-processing amazon-web-services node.js aws-lambda aws-serverless
我们正在使用v3版本的AWS无服务器图像处理程序来为我们的站点进行图像处理。但是,当AWS发布此更新时,整个事情就坏了。不幸的是,由于以下原因,新版本(v4)不适用于Thumbor样式请求:
它仅适用于s3存储桶根目录中的图像
该安全哈希功能尚未实现,以确保安全
在“auto_webp”功能尚未实现,因此它不能充当WEBP图片到支持它们的浏览器。
我如何在新版本的AWS serverless-image-handler上启动并运行,而不必对应用程序进行重大更改(即,我想继续使用Thumbor样式请求,但使用v4的serverless-image -处理程序)?
我注意到很多其他人也有同样的问题,所以我希望这些笔记能帮助人们解决他们的问题。
在此堆栈的新 v4 上对 lambda 图像处理程序函数进行了一定数量的工作后,我现在可以令人满意地处理 Thumbor 样式的请求,而且我不需要更改应用程序请求图像的方式。
请注意,这里的一些修复是有限的,因为我们只使用了 Thumbor 功能的一个子集,所以我们只修复了我们需要的东西。可能您正在使用我们没有使用的选项,这些选项可能还需要额外的或不同的编码才能开始工作。
一旦您部署了 AWS 无服务器图像处理程序堆栈的 v4,您唯一需要更改的是由云形成创建的堆栈的 Lambda 'ImageHandlerFunction'。以下是对此进行更新的一些快速指示:
在Lambda中找到ImageHandlerFunction,进去点击Actions --> Export function --> Download deployment package
这将下载一个包含图像处理程序所有代码的 zip 文件。从此 zip 中提取所有文件。
您现在可以开始更改代码。如果需要,您可以使用 mocha 运行单元测试。
对代码进行更改后,您需要创建一个包含所有文件的新 zip
您需要将新的部署包上传到S3,然后才能更新ImageHandlerFunction(直接上传太大了)
上传到 S3 上的某个位置后,转到 lambda 中的 ImageHandlerFunction 并从代码条目类型中选择 s3 选项。在 S3 上输入 zip 文件的链接,然后单击页面顶部的保存。
您现在可以测试更新后的函数。请记住,响应缓存在 cloudfront 上,因此您可能需要在 cloudfront 上创建和失效以对其进行测试,或者使用尚未缓存的新图像。
关于解决上述问题:
要使其处理子文件夹中的图像,而不仅仅是 S3 存储桶的根目录:请在此处查看我的修复程序- 基本上您需要更改此内容:
const key = (event["path"]).split("/");
return key[key.length - 1];
Run Code Online (Sandbox Code Playgroud)
我使用的包括单元测试的解决方案在上面的 github 评论中。您可能需要稍微不同的解决方案。
要使安全哈希正常工作,请在此处查看我的修复程序
要获得自动 webp 支持,请在此处查看我的修复
关于修复 Thumbor 和 json 图像请求之间的映射,这需要一些小的更改,但这并不是什么大问题。最好仅根据您自己的要求执行此操作,因为我的修复非常特定于我的使用。我会尝试在相关的 github 票证中添加一些注释。