在没有二进制文件的情况下部署 Lambda 函数

Deploy Lambda functions without binaries

我在无服务器部署方面遇到了一些问题,因为当我部署我的 Lambda 函数时,无服务器框架开始打包我的 node_modules,但这需要很多时间。

我的意思是node_modules没有更新为什么要重新上传。也许有人知道,如何在不打包二进制文件的情况下仅部署 Lambda 函数代码?

您需要添加packaging configuration

在您的 serverless.yml 文件中,添加:

package:
  exclude:
    - node_modules/**

删除 AWS-SDK 模块(因为如果您不上传它们,Lambda 将使用 AWS 提供的更好)和删除开发模块(如测试框架)很有用。但是,所有其他模块都是依赖项,需要上传才能使您的函数正常工作。因此,将程序包设置配置为 include/exclude 您所需要的。

关于你的其他问题

why to upload node_modules again if it have not been updated

这不是无服务器框架的限制。这是 AWS Lambda 服务的限制。您不能 部分上传 Lambda 函数。 Lambda 始终要求上传的 zip 包包含更新的代码和所有必需的模块依赖项。

如果您的部署时间过长,也许您应该考虑将此 Lambda 函数分解成更小的单元。