使用AWS Lambda编译本机代码(npm install)的软件包

时间:2017-08-07 16:38:57

标签: lambda aws-lambda serverless-framework serverless-architecture sharp

我需要使用sharp包调整Lambda函数中的图像大小,但是在我的Windows机器上执行“npm install”时会构建本机代码,这肯定不适用于Amazon Linux服务器Lambda托管的地方。

使用无服务器时,建议的解决方法是什么?

2 个答案:

答案 0 :(得分:7)

如果要更加干净地与无服务器框架集成,可以将NPM软件包安装在安装到工作目录的Docker容器中:

对于Node v6.10:

$ docker run -v "$PWD":/var/task lambci/lambda:build-nodejs6.10 npm install

对于Node v4.3:

$ docker run -v "$PWD":/var/task lambci/lambda:build-nodejs4.3 npm install

这将安装package.json中的所有软件包,并在您的目录中安装node_modules/

这是使用来自Lambci的Docker容器,它与实际的AWS Lambda环境非常接近。

答案 1 :(得分:1)

在我的Windows机器上为Lambda开发NodeJS图像处理应用程序时遇到了类似的问题。我设法使用Docker解决了这个问题。

由于AWS Lambda底层执行环境基于Amazon Linux映像,其中映像由AWS for Docker公开,因此您实际上可以pull the image并在Windows计算机中运行Amazon Linux容器。

所以在容器中,我将代码克隆到那里,运行npm install,zip并将它们上传到S3存储桶,最后从S3创建/更新Lambda代码。