Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何在AWS Lambda上安装GraphicsMagick或ImageMagick?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Node.js的gm包以及AWS Lambda上提供的认 @L_424_1@magick安装.

const gm = require(‘gm’).subClass({imageMagick:truE});

出于某种原因,某些图像的调整大小功能失败.

我使用Amazon Linux AMI(ami-hvm-2016.03.3.x86_64-gp2)创建了一个EC2实例.
我安装了yum提供的(旧)6.x版本的ImageMagick.当我在EC2实例上使用该安装运行我的脚本时,它会再现我在Lambda上运行代码时看到的失败,确认这是导致失败的此版本IM的问题.

如果我用sudo yum install Graphicsmagick安装Grpahicsmagick.这允许我的脚本无错误地执行调整大小.

const gm = require(‘gm’).subClass({imageMagick:falsE});

但是,我不确定如何在无服务器的部署中捆绑这个.如果我使用sudo yum –installroot = / var / task install Graphicsmagick将Graphicsmagick安装到与脚本相同的文件夹中,并使用此require语句运行我的脚本:

const gm = require(‘gm’).subClass({imageMagick:false,appPath:’./usr/bin /’});

当我在EC2实例上运行脚本时,调整大小工作.但是,当我使用无服务器进行部署,并且脚本在Lambda中运行时,可执行文件似乎已损坏. gm在调用gm(buffer).size(/*…*/)时失败并出现以下错误.

无法获得图像大小:错误
{代码”: “EPIPE”,“错误号”: “EPIPE”,“系统调用”: “写”}

如何构建可以无服务器部署的ImageMagick或Graphicsmagick版本?

解决方法

我旋转了最新的aws linux并运行了下面的命令.

yum -y install gcc-c++ libpng-devel libjpeg-devel libtiff-devel wget
wget https://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.26/Graphicsmagick-1.3.26.tar.gz
tar zxvf Graphicsmagick-1.3.26.tar.gz
cd Graphicsmagick-1.3.26
./configure --prefix=/var/task/graphicsmagick --enable-shared=no --enable-static=yes
make
sudo make install
tar zcvf ~/graphicsmagick.tgz /var/task/graphicsmagick/

我将dir打到我的本地,然后将它扔进包装中进行拉链和展开.我的布局类似于链接的aws repo代码,但是针对无服务器进行了修改.

Lambda代码

// graphicsmagick dir is at the root of my project
const BIN_PATH = process.env['LAMBDA_TASK_ROOT'] + "/graphicsmagick/bin/";
const Gm = require('gm').subClass({ appPath: BIN_PATH });

// below is inside the handler
process.env['PATH'] = process.env['PATH'] + ':' + BIN_PATH;

serverless.yml

package:
  artifact: /path/to/function.zip

我使用神器并建立自己的拉链.如果你遇到下面的问题,我建议你这样做.
https://github.com/serverless/serverless/issues/3215

# -y to keep the symlinks and thus reduce the size from 266M to 73M
cd lambda && zip -FS -q -r -y ../dist/function.zip *

抓住的想法来自:

https://gist.github.com/bensie/56f51bc33d4a55e2fc9a

https://github.com/awslabs/serverless-image-resizing

编辑:
可能还要查看lambda layers.可能只需要做一次这样的事情.

大佬总结

以上是大佬教程为你收集整理的node.js – 如何在AWS Lambda上安装GraphicsMagick或ImageMagick?全部内容,希望文章能够帮你解决node.js – 如何在AWS Lambda上安装GraphicsMagick或ImageMagick?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。