Amazon web services 如何排除无服务器中的嵌套文件夹?

Amazon web services 如何排除无服务器中的嵌套文件夹?,amazon-web-services,serverless,Amazon Web Services,Serverless,我正在使用serverless框架将lambda部署到AWS。我发现在我的项目中有许多嵌套的node\u模块文件夹,它们占用了超过250MB的数据。我认为它们来自第三方依赖关系,这些依赖关系有冲突版本。如何排除在serverless.yml中打包所有嵌套的node\u模块 package: exclude: - nodejs/node_modules/aws-sdk/** - nodejs/node_modules/**/node_modules 我已经尝试了上面的配置,但

我正在使用
serverless
框架将lambda部署到AWS。我发现在我的项目中有许多嵌套的
node\u模块
文件夹,它们占用了超过250MB的数据。我认为它们来自第三方依赖关系,这些依赖关系有冲突版本。如何排除在serverless.yml中打包所有嵌套的
node\u模块

package:
  exclude:
    - nodejs/node_modules/aws-sdk/**
    - nodejs/node_modules/**/node_modules

我已经尝试了上面的配置,但没有排除它们。

排除较大的
节点模块
目录中的
节点模块
文件夹不是最好的方法,因为这只会破坏所涉及的包含模块(在这种情况下,它们可能根本不存在)

你最好的方法就是使用。Webpack包括,这将大大缩小部署包的大小

以上内容应该足够了,但您可以通过在
serverless.yml
中包含以下内容来进一步优化:

package:
  individually: true
  excludeDevDependencies: false
这将为每个lambda创建单独的部署包,并排除所有开发依赖项。(它们是不相关的,因此如果您愿意,您可以只使用其中一个。)您在问题中只提到一个lambda,但考虑到
节点_模块的大小,我猜您确实有多个lambda

如果您只有一个lambda,那么它可能相当大,所以我建议将它拆分为多个较小的lambda,由一个。Serverless还处理step函数的部署,因此您可以在
Serverless.yml
文件中很好地管理所有资源