【问题标题】:Deploy Lambda functions without binaries部署没有二进制文件的 Lambda 函数
【发布时间】:2017-03-24 18:07:45
【问题描述】:
我在使用无服务器部署时遇到了一些问题,因为当我部署我的 Lambda 函数时,无服务器框架开始打包我的 node_modules,但这需要很多时间。
我的意思是如果 node_modules 没有更新,为什么还要再次上传它。也许有人知道,如何只部署一个 Lambda 函数代码而不打包二进制文件?
【问题讨论】:
标签:
node.js
amazon-web-services
aws-lambda
serverless-framework
【解决方案1】:
您需要添加packaging configuration。
在您的 serverless.yml 文件中,添加:
package:
exclude:
- node_modules/**
删除 AWS-SDK 模块(因为如果您不上传它们,Lambda 将使用 AWS 提供的 - 更好)并删除开发模块(如测试框架)很有用。但是,所有其他模块都是依赖项,需要上传才能使您的功能正常工作。因此,配置包设置以准确包含/排除您需要的内容。
关于你的其他问题
node_modules没有更新为什么还要上传
这不是无服务器框架的限制。这是 AWS Lambda 服务的限制。您不能部分上传 Lambda 函数。 Lambda 始终要求上传的 zip 包包含更新的代码和所有必需的模块依赖项。
如果您的部署时间过长,也许您应该考虑将此 Lambda 函数拆分为更小的单元。