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

Packages compiling native code (npm install) using AWS Lambda

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

使用无服务器时推荐的解决方法是什么?

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

解决了这个问题

由于AWS Lambda底层执行环境是基于AmazonLinux镜像,其中镜像是AWS为Docker制作public的,那么其实可以pull the image 和 运行 您 Windows 机器中的亚马逊 Linux 容器。

所以在容器中,我在其中克隆了我的代码,运行 npm install,将它们压缩并上传到 S3 存储桶中,最后 create/update Lambda 代码来自S3.

如果你想更干净地与无服务器框架集成,你可以将你的 NPM 包安装在一个 Docker 容器中,该容器已安装到你的工作目录:

对于节点 v6.10:

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

对于节点 v4.3:

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

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

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