4

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

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

4

2 回答 2

8

如果你想更干净地与无服务器框架集成,你可以将你的 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 环境。

于 2017-08-08T20:07:44.057 回答
1

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

由于 AWS Lambda 底层执行环境基于 Amazon Linux 镜像,其中镜像由 AWS 为 Docker 公开,那么您实际上可以拉取镜像并在您的 Windows 机器中运行 Amazon Linux 容器。

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

于 2017-08-08T00:59:55.863 回答